Можно ли так использовать сельдерей?
Допустим, у меня есть приложение Django, которое принимает сообщения от пользователей и загружает их в стороннее хранилище с помощью вызова API.
Теперь, эти пользователи заходят на сервер только в определенный период времени каждый день, предположим, в 11:00 часов и до 11:20. Максимальное количество запросов может быть до 3000 (минимум 2500), т.е. за 20 минут к серверу будет сделано 3000 POST запросов. С каждым запросом на сервер отправляется файл размером 5-10 мб, а сервер отправляет этот файл в стороннее хранилище с помощью API. Я рассчитал среднее время, затрачиваемое на этот POST к API, которое составляет 5 секунд (среднее).
Теперь, если я настрою celery таким образом, что когда пользователь делает POST на сервере, я проверяю это сообщение и передаю часть загрузки celery, в то время как мой Django продолжает выполнять другие запросы, чтобы сохранить плавную работу для пользователя, в то время как Celery заботится о загрузке всех файлов по одному.
Могу ли я сделать что-то подобное?
Если можно, то какие в этом могут быть недостатки?
Будет ли ситуация, когда я могу потерять некоторые загруженные файлы?
Я новичок в celery и не могу понять, как это происходит. Поэтому я надеюсь, что сообщество поможет мне в этом.
Заранее спасибо.
Лучшим решением является
- upload the file in the web page through the js logic, then the third-party file server will return you an id(or url ) of the file data.
- then you post the data with the file url to your application and save it.
я рекомендую не использовать celery для обработки процесса загрузки файлов
Потому что если вы внедряете Celery, вам нужен брокер (сохранять сообщение, например: RabbitMQ или другой), и процесс обработки запроса будет отдельно два подпроцесса. один из процессов обрабатывается синхронно, а другой асинхронно. И вы не сможете поддерживать согласованность данных без других инструментов