Варианты запуска асинхронных / фоновых задач по требованию пользователя в Django?

Мое приложение Django генерирует сложный отчет, создание которого может занимать до 5 минут. Поэтому оно запускается раз в ночь с помощью команды управления по расписанию.

Все было хорошо, но теперь я хочу, чтобы пользователь мог выбрать диапазон дат для отчета, что означает, что отчет должен быть создан, пока пользователь ждет.

Какие у меня есть варианты для запуска tast в фоновом режиме? Пока что я нашел следующие:

  • Celery - может работать, но сложен
  • django-background-tasks выглядит как подходящий инструмент для работы, но не обновлялся годами, последняя поддерживаемая версия Django - 2.2
  • .
  • Задача отчета/фона может быть сгенерирована AWS Lambda, в основном в микросервисе. Django вызывает микросервис, который может выполнить фоновую задачу, а затем вызвать приложение Django обратно после завершения. Именно так я делал в прошлый раз, но не уверен, что это сработает сейчас, поскольку мне нужно будет отправить микросервису 10мб данных для обработки.
  • .
  • Использовать subprocess.popen, который, по словам кого-то здесь, сработал для них, но в других отчетах говорится, что он не работает из Django.
Вернуться на верх