Сельдерей, использующий mongodb в качестве 'CELERY_RESULT_SERIALIZER' для хранения файла и его восстановления
Конфиги среды:
- Веб-сервисы Django
- DB: mongodb
- Сельдерей для обработки фонового задания
Я использую 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, который я сохранил. заранее спасибо