python 具有间隔触发器的 apschedule BlockingScheduler:立即启动

python apschedule BlockingScheduler with interval trigger: Start immediately

我正在使用 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,但没有成功。如何确保作业立即执行,而不是在第一次等待间隔后执行?

尝试next_run_time=datetime.now()

不是一个好的解决方案,但对我有用。

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')

给出的答案对于一个有据可查的简单任务来说太复杂了: https://apscheduler.readthedocs.io/en/3.x/modules/triggers/date.html#examples

要立即添加工作运行:

'date' 触发器和 datetime.now() 作为 run_date 是隐式的

sched.add_job(my_job)