Ждать завершения asyn_task или завершить ее в фоновом режиме
У меня есть несколько функций в моем Django приложении, которые занимают много времени (скраппинг с использованием прокси), иногда это занимает более 30 секунд и убивается gunicorn и AWS сервером из-за таймаута. и я не хочу увеличивать значение таймаута.
Решение, которое пришло мне в голову - это запустить эти функции как async_task
, используя django-q
модуль.
Возможно ли сделать следующее:
когда представление вызывает длинную функцию, запустите функцию асинхронно
- если она возвращает результат за заранее определенное время, то возвращает результат пользователю.
- Если нет, возвращает неполный результат и продолжает работу в фоновом режиме (Функция изменяет модель в базе данных), нет необходимости уведомлять пользователя об изменениях.