Отправка файла из задачи сельдерея на маршрут flask - PullRequest
1 голос
/ 07 мая 2020

У меня есть приложение flask, в котором я запрашиваю и фильтрую большие наборы данных из S3 в Celery Task. Я хочу предоставить пользователю отфильтрованные данные в формате CSV. Размер CSV до 100 МБ. Моя первоначальная мысль заключалась в том, чтобы Celery сохранил набор данных как CSV на диск, а затем использовал send_file в маршруте flask, НО я использую Heroku для развертывания, который имеет эфемерную файловую систему. Поэтому, если я сохраню файл в работнике Celery, он не будет передан веб-работнику. Я также играл с запросом S3 непосредственно в маршруте flask, а затем с отправкой файла без сохранения на сервер, но запрос файла занимает время, до 30 секунд, поэтому я хочу сохранить его как фоновое задание в Celery .

Другая мысль заключалась в том, чтобы загрузить отфильтрованные данные в S3 и удалить после загрузки. Однако это кажется неэффективным, потому что это означает загрузку, фильтрацию и повторную загрузку.

Есть ли способ сделать это эффективно, или мне следует переехать с Heroku на то место, где у меня есть место на SSD. Спасибо!

...