Django APScheduler 作业挂断没有错误

问题描述

我使用 django-apscheduler 来管理任务。 但是在服务器启动一段时间后,工作停止工作,当我检查 django 管理页面时。 也没有错误日志。

这是我的runapscheduler.py

...
def start():
    scheduler = BackgroundScheduler(timezone=settings.TIME_ZONE)
    scheduler.add_jobstore(DjangoJobStore(),"default")

    scheduler.add_job(
        process_tt_file.start_tt_process,trigger=crontrigger(minute='5,20,35,50',hour='*'),id='process_tt_file',max_instances=1,replace_existing=True
    )
    logger.info("Added job 'process_tt_file'.")

    ...

    try:
        logger.info("Starting scheduler...")
        scheduler.start()
    except KeyboardInterrupt:
        logger.info("Stopping scheduler...")
        scheduler.shutdown()
        logger.info("Scheduler shut down successfully!")
...

这是我的 urls.py,我在 django 启动时启动 apscheduler

...
urlpatterns = ...

runapscheduler.start()

任务应该每 15 分钟运行一次。但不知何故,在我检查状态之前,apscheduler 并没有解雇这项工作。

The task should run every 15min

我应该如何防止这种情况发生?

解决方法

simple_scheduler 不会错过时间。你可以试试

from simple_scheduler.event import event_scheduler
hour =   ["0"+str(h) if h//10 == 0 else str(h) for h in range(0,24)]
minute = ["0"+str(h) if h//10 == 0 else str(h) for h in [5,20,35,50]]
WHEN = ["*|"+str(h)+":"+str(m) for h in hour for m in minute]

event_scheduler.add_job(target = process_tt_file.start_tt_process,when = WHEN,tz = settings.TIME_ZONE)
event_scheduler.run()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...