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