微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django APScheduler 作业挂断没有错误

如何解决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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。