Django APScheduler无法按照计划使用Apache和mod_wsgi

时间:2018-12-15 21:05:46

标签: django mod-wsgi apscheduler

我有一个使用django-apscheduler且配置如下的Django项目:


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中可见。此外,作业有时会执行 ,例如,上述日常作业在本月已执行了7次,尽管今天是15日,因此应该执行了15次。请注意,在此期间我已经重新启动了Apache。

这似乎是过程生命周期的问题。看来mod_wsgi进程已暂停,因此APScheduler作业无法运行。

mod_wsgi进程的生命周期是多少?如何确保作业按计划执行或至少每天执行一次?

0 个答案:

没有答案