Периодические задачи не вызываются в Django
В моём проекте есть периодические задачи. Проблема в том, что они не вызываются.
Я создал тестовую функцию, которая отправляет мне сообщение, и я пойму, что задача выполнена:
def test_crj():
send_message("Test cronjobs!")
Запуск настроил на раз в 5 минут:
# in settings.py
INSTALLED_APPS = [
... ,
"django_crontab",
]
CRONJOBS = [
("*/5 * * * *", "project.cronjob.test_crj", '>> /tmp/test.log'),
]
crontab
видит задачи:
> docker exec container python3.9 manage.py crontab show
# Currently active jobs in crontab:
# a35573388f4e46c33f88fc825f0a1d8f -> ('*/5 * * * *', 'project.cronjob.test_crj', '>> /tmp/test.log')
> docker exec container crontab -l
# */5 * * * * /usr/local/bin/python3.9 /app/manage.py crontab run a35573388f4e46c33f88fc825f0a1d8f >> /tmp/test.log # django-cronjobs for project
Но ничего не происходит! При этом запуск функции отдельно (например, в manage.py shell
) работает нормально. И если я запускаю командой, которую должен запускать crontab
(как я это понимаю), всё работает.
> docker exec container python3.9 manage.py crontab run a35573388f4e46c33f88fc825f0a1d8f
# it works
В чём может быть ошибка и кто виноват - django_crontab
или системный crontab
И где и как я могу найти в логах, что именно не работает?
UPD:
Я внутри контейнера руками создал задачу /1 * * * * echo 'Hello!' >> /tmp/test.txt
, и она корректно отрабатывает.
Также когда внутри контейнера вызываю такое строкой, то тоже всё нормально работает.
/usr/local/bin/python3.9 /app/manage.py crontab run a35573388f4e46c33f88fc825f0a1d8f >> /tmp/test.log # django-cronjobs for project
Но раз в пять минут почему-то упорно не хочет вызываться.