Если появилась потребность завести в своем приложении периодические задачи или фоновые задачи, но не хочется использовать для этого тяжелые сервисы, типа Celery, то на помощь может придти пакет попроще - django-background-tasks.
После установки предлагается создать функцию-таск, обернув ее в декоратор @background. Затем можно эту функцию вызвать откуда-то и она начнет выполняться периодически в указанный в декораторе промежуток времени. Вроде все отлично, но как же быть, если фоновая задача должна выполняться сразу же после старта приложения?
Не нашел в документации ответ на этот вопрос, поэтому сделал свое решение. Для этого в каталоге модуля создается файл apps.py с примерно следующим содержимым:
Как видно из кода, при запуске команды process_tasks - дропаются висящие в очереди задачи и создаются заново. Не забываем теперь вместо some_app из INSTALLED_APPS в файле настроек Django settings.py прописать some_app.apps.CustomAdminConfig. Теперь осталось запустить демона, которые будет контролировать выполнение команды python manage.py process_tasks. Сделать это можно, например, через supervisor.