Django APScheduler не выполняет задания по расписанию с Apache и mod_wsgi - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть проект Django, который использует django-apscheduler со следующей конфигурацией:


Apache virtualhost

WSGIPassAuthorization On

WSGIScriptAlias / /some/app/wsgi.py
WSGIDaemonProcess some-app \
        user=someapp threads=15 display-name=some-app \
        python-path=/some/app/venv/lib/python3.7/site-packages
WSGIProcessGroup some-app

Запланированные задачи

from pytz import utc

from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job

from administration.scheduled_tasks import add_db_backup, delete_old_db_backups

scheduler = BackgroundScheduler(timezone=utc)
scheduler.add_jobstore(DjangoJobStore(), 'default')

register_events(scheduler)

@register_job(scheduler, 'cron', hour='0', minute='0')
def db_backups_job():
    add_db_backup()
    delete_old_db_backups()

scheduler.start()

Как и ожидалось, запланированное задание отображается в Django admin.Кроме того, задания выполняются , иногда , например, вышеуказанное ежедневное задание выполнялось семь раз в течение этого месяца, хотя сегодня это 15-е и, следовательно, оно должно было выполняться 15 раз.Обратите внимание, что я перезапустил Apache в течение этого времени.

Кажется, это проблема времени жизни процесса.Кажется, что процесс mod_wsgi приостановлен и, следовательно, задания APScheduler не могут быть запущены.

Каково время жизни процесса mod_wsgi?Как я могу убедиться, что задания выполняются в соответствии с графиком или хотя бы ежедневно?

...