安排一个 python 脚本每小时运行一次

我正在尝试编写一个每小时执行一次的脚本,但是当我运行它时……第一次运行该作业需要一个小时,然后它开始像每 5 秒一样运行一次我不明白我在做什么在这里做错了

from apscheduler.schedulers.blocking import BlockingScheduler

def job():
    print('excuting job')

scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', hours = 1)
scheduler.start()

这是我使用的另一个代码,但结果相同

schedule.every().hour.do(job)

while True:
    schedule.run_pending()
    time.sleep(20)
stack overflow schedule a python script to run every hour
原文答案

答案:

作者头像

可能在你的 def 中有一些事情要做,比如一个流氓刹车或其他糟糕的 while 循环或睡眠计时器。也许检查作业计时器不够短也会影响某些事情?

import schedule # I'm not sure about the BlockingScheduler import but this one works for me
import time     # Hate how we need an import for this and it's not built into python....

def job():
    print('executing job')

# Run your job on first boot without the scheduler
job()

# Then setup the schedule to be used from now on
schedule.every().hour.do(job)

# Check every second if we can do our job yet or not
# Bonus heartbeat . so you know the while loop is running and not crashed.
while True:
    schedule.run_pending()
    print(".", end="", flush=True)
    time.sleep(1) # seconds

如果它运行我们的 job() 然后卡住,启动循环或崩溃,那么它在你的工作定义中。如果它第一次运行良好,则可以很好地设置计划,但随后无法执行计划,那么如果没有看到更多的 job() 定义,我真的没有任何想法。对于狗屎和傻笑,你可以点子卸载和再次重新安装时间表,看看是否有帮助 idk..