На самом деле вы пытаетесь установить полный дуплекс клиент-серверный обмен данными. Есть много стратегий, чтобы сделать это возможным:
- WebSockets, протоколы чата, протоколы IoT и т. Д.
В Django
, есть хороший пакет под названием channels
для реализации этого: https://channels.readthedocs.io/en/latest/
A Стратегия может заключаться в том, чтобы немедленно ответить на HTTPResponse
с URI, который будет обслуживать ресурс, когда он будет доступен (с маркером безопасности ). И вы можете предоставить другую конечную точку, которую интерфейсный пользователь может вызывать всякий раз, когда он хочет узнать ход обработки, выдавая токен .
- Асинхронные рабочие нагрузки
Насколько я понимаю, вы выполняли обработку синхронно , блокируя ответ HTTP во время всех задач обработки. На самом деле, с политикой тайм-аута, это может быть проблематично c.
И, наконец, если вы хотите масштабировать свое приложение, вы, вероятно, хотели бы разделить чисто отвечающие HTTP-запросы и долго обрабатывать рабочие нагрузки.
Для этого вам может потребоваться асинхронная обработка, для который celery
является python естественным кандидатом.