Сельдерей, использующий mongodb в качестве 'CELERY_RESULT_SERIALIZER' для хранения файла и его восстановления

Конфиги среды:

  1. Веб-сервисы Django
  2. DB: mongodb
  3. Сельдерей для обработки фонового задания

Я использую celery для обработки больших данных. Я настроил "celery_result_backend", чтобы сконфигурировать детали конфигурации бэкенда mongo.

BROKER_URL = MONGO_URI_STRING
CELERY_ACCEPT_CONTENT = ['pickle']
CELERY_TASK_SERIALIZER = 'pickle' 
CELERY_TASK_RESULT_EXPIRES = 18000
CELERY_RESULT_BACKEND = MONGO_URI_STRING
CELERY_MONGODB_BACKEND_SETTINGS = {
   'database': 'test',
   'taskmeta_collection': 'celery_storage',
}

В моем примере я должен хранить файл в mongodb. Но я не могу прочитать файл

Я пытался AsyncResult() метод сельдерея, он дает объект результата. Мой взгляд на Джанго

def celery_async_result_view(request):
res = AsyncResult(id)
    response = HttpResponse(res, content_type='text/plain')
    response['Content-Disposition'] = 'attachment; 
    filename="testfile.txt"'
    return response

Когда я запрашиваю это представление, я получаю некоторое значение мусора в загружаемом файле.

I / p вывод выглядит как: i/p file: testfile.txt "Hello world" o/p file: response.txt "некоторая величина мусора"

Документ хранится в коллекции mongodb как

{
"_id" : "ff1c3acb-6e2d-4052-a4fc-ee79eb5af448",
"status" : "SUCCESS",
"date_done" : ISODate("2018-04-16T06:41:23.074Z"),
"traceback" : BinData(0,"gAJOLg=="),
"result" : BinData(0,"gAJjX19idWlsdGluX18KZmlsZQpxASmBcQIu"),
"children" : BinData(0,"gAJdcQEu")
}

Я ожидаю текстовый файл в reposne, который я сохранил. заранее спасибо

0 ответов

Другие вопросы по тегам