的apscheduler间隔任务未运行

我想每天早上6点开我的主要任务.但出于测试目的,我将间隔设置为5秒.问题在于它似乎从未解雇.我在maintask方法中有一个断点,从未达到过,并且没有任何内容输出到控制台.我假设它没有运行.

预计到达时间:
我的代码到达了scheduler.start(),该代码由于阻塞而停止了.它应该在5秒钟内启动我的maintask,但永远不会.

python版本是2.7
apscheduler版本是3.0

我已经在Windows和Debian上运行了相同的结果.

这是我的代码.

from apscheduler.schedulers.blocking import BlockingScheduler
import datetime


def maintask():
    print("blah")


def main():

    scheduler = BlockingScheduler()

    print("Scheduling Tasks")
    start_time = (datetime.datetime.now()).replace(hour=6, minute=0, second=0, microsecond=0)
    scheduler.scheduled_job(maintask, 'interval', id="MainTaskid", name="mainTask", start_date=start_time, seconds=5, misfire_grace_time=60)
    print("Tasks Scheduled")
    print("Running Tasks")
    scheduler.start()
    print("Good Bye")
    return 0


if __name__ == "__main__":
    main()

解决方法:

问题是您使用的是scheduled_job而不是add_job.

正如User Guide所解释的那样,schedule_job主要旨在用作装饰器,以“方便地声明在应用程序运行时不更改的作业”,而后者是添加作业的“最常见方式”.

在这种特殊情况下,我认为问题在于add_job会强制调度程序唤醒,而cheduled_job不会—除非您依靠该唤醒来强制执行,否则您认为这并不重要失火检查将在启动时运行,而不是直到明天早上6点.

无论如何,只需将其更改为add_job即可解决该问题.

上一篇:的python-NameError:全局名称’create_engine’未定义[尝试创建SQLAlchemyJobStore时]


下一篇:Python—定时任务(二)