【问题标题】:Run Job every 4 days but first run should happen now每 4 天运行一次作业,但现在应该进行第一次运行
【发布时间】:2023-10-20 03:43:01
【问题描述】:

我正在尝试将 APScheduler 设置为每 4 天运行一次,但我需要现在开始运行该作业。我尝试使用interval 触发器,但我发现它在运行前等待指定的时间。我也尝试通过以下方式使用 cron:

sched = BlockingScheduler()
sched.add_executor('processpool')

@sched.scheduled_job('cron', day='*/4')
def test():
    print('running')

我得到的最后一个想法是过去使用start_date

@sched.scheduled_job('interval', seconds=10, start_date=datetime.datetime.now() - datetime.timedelta(hours=4))

但在运行前仍然等待 10 秒。

【问题讨论】:

    标签: apscheduler


    【解决方案1】:

    试试这个:

    @sched.scheduled_job('interval', days=4, next_run_time=datetime.datetime.now())
    

    【讨论】:

    • 它不起作用,它会跳过几毫秒。
    【解决方案2】:

    与上面的答案类似,唯一不同的是它使用了 add_job 方法。

    scheduler = BlockingScheduler()
    scheduler.add_job(dump_data, trigger='interval', days=21,next_run_time=datetime.datetime.now())
    

    【讨论】:

    • 它不起作用,它会跳过几毫秒。
    • 跳过几毫秒是什么意思? APScheduler (3.x) 的精度为一秒。
    最近更新 更多