Как правильно выполнить асинхронное выполнение задач django

Я пытаюсь сделать так, чтобы пользователь мог нажать кнопку Download на веб-странице, чтобы загрузить около 30 отчетов из стороннего API.

Очевидно, что на это требуется время. Поэтому я планирую реализовать веб-страницу на основе WebSocket, которая будет отображать статус конкретной загрузки (даже если пользователь перезагрузит страницу), используя Celery, Redis и Django Channels и Postgres. Если пользователь захочет загрузить несколько отчетов одновременно, каждая загрузка будет помещена в очередь.

Я знаю, как создавать задачи и использовать Django Channels, мне просто интересно, есть ли стандартный способ управлять статусом задачи в базе данных, чтобы независимо от того, что происходит - загрузка на front-end не говорила всегда "обработка", если она, например, не удалась.

Существует ли правильный способ хранения статуса задачи в базе данных?

Что если загрузка (задача) не удалась во время выполнения, как она будет сохранена?

Любая помощь будет принята с благодарностью.

Я создал фронт-энд и подготовился к выполнению websocket.

Вернуться на верх