Python APScheduler阻塞调度程序与间隔触发器:立即开始

14

我正在使用Python的APScheduler来定时执行某个任务,每隔45分钟执行一次。问题是,当我添加这个任务并启动调度程序时,它会在距离现在45分钟后开始执行。

from apscheduler.schedulers.blocking import BlockingScheduler

class myClass:

    def schedule(self):
        self.scheduler = BlockingScheduler()
        self.scheduler.add_job(self.myJob, 'interval', minutes=45)
        self.scheduler.start()

    def myJob(self):
        print('I finally started')

我试过设置 start_date,但没有成功。我如何确保作业立即执行,而不是等待第一次间隔后再执行?


2
间隔触发器的设计已在即将发布的v4.0版本中进行了修复,以便第一次运行立即开始。 - Alex Grönholm
啊!太久没做了,谢谢提醒。不过还没有发布呢。 - MrR
3个回答

33

尝试使用 next_run_time=datetime.now()


2
from datetime import datetime, then I use datetime.utcnow() because I set up my scheduler with BlockingScheduler({'apscheduler.timezone': 'UTC'}) - deed02392

6

这不是一个好的解决方案,但对我来说可行。

from apscheduler.schedulers.blocking import BlockingScheduler

class myClass:

    def schedule(self):
        self.myJob()#run your job immediately here, then scheduler
        self.scheduler = BlockingScheduler()
        self.scheduler.add_job(self.myJob, 'interval', minutes=45)
        self.scheduler.start()

    def myJob(self):
        print('I finally started')

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接