【问题标题】:How to schedule a python function to run every hour at specific minute (ex 00, 10, 20) with apscheduler如何使用 apscheduler 安排 python 函数在特定分钟(例如 00、10、20)每小时运行一次
【发布时间】:2019-11-06 01:20:28
【问题描述】:

我尝试在我的脚本中安排一个函数在每小时的特定分钟运行,即如果我的脚本在 11.46 开始运行,我的函数将在 11.50、12.00、12.10 等运行,如果它失败并且做同样的事情并且重新启动。我已经看到可以从命令行使用 cron 来执行此操作,但是在脚本与调度程序一起运行时有没有办法做到这一点?

我已经创建了一个调度程序,它在我的脚本启动后每 10 分钟运行一次,但我希望我的函数在特定的分钟内运行,而不仅仅是特定的时间间隔。

from apscheduler.schedulers.background import BackgroundScheduler
import atexit

def demo_job:
    print("test")

try:
    sched = BackgroundScheduler(daemon=True)
    sched.add_job(demo_job, trigger='interval', minutes=10)
    sched.start()
    atexit.register(lambda: sched.shutdown(wait=False))
except:
    print("Unexpected error:")

如果我的脚本在 11.47 开始运行,我的函数的第一次预定调用是在 11.57,下一次在 12.07、12.17 等...我希望第一次运行在 12.00、下一次在 12.10、12.20 等

【问题讨论】:

  • 很高兴告诉你这个解决方案在 Django 中对我有用

标签: python cron scheduled-tasks apscheduler


【解决方案1】:

您可以尝试使用cron trigger

sched.add_job(
    demo_job, 
    trigger='cron',
    minute='*/10',
    hour='*'
)

表达式*/10 将在每十分钟触发一次作业,从最小值开始。 Crontab ref

【讨论】:

  • 这里的“小时”参数是多余的。
猜你喜欢
  • 1970-01-01
  • 2021-05-07
  • 2017-01-05
  • 2021-06-14
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 2023-03-16
  • 2021-03-02
相关资源
最近更新 更多