我试图安排一个任务与模块“时间表”为每小时。我的问题是,我需要的任务,首先运行,然后再运行每小时。
这段代码工作正常,但在初始运行前要等待一个小时
import schedule
import time
def job():
print("This happens every hour")
schedule.every().hour.do(job)
while True:
schedule.run_pending()
我想避免这样做:
import schedule
import time
def job():
print("This happens immediately then every hour")
schedule.every().hour.do(job)
while i == 0:
job()
i = i+1
while i == 1:
schedule.run_pending()
理想情况下,有这样一个选项会很好:
schedule.run_pending_now()
5条答案
按热度按时间knpiaxh11#
可能最简单的解决方案是立即运行它并调度它,例如:
kdfy810k2#
要运行所有作业,无论它们是否计划运行,请使用
schedule.run_all()
。作业在完成后被重新调度,就像使用run_pending()
执行它们一样。7xllpg7q3#
如果有许多任务需要一些时间来执行,并且希望在启动期间独立运行它们,则可以使用
threading
ar7v8xwq4#
实际上,我不认为直接调用函数是明智的,因为它会阻塞没有调度器的线程,对吗?
我认为将作业设置为执行一次并没有错,例如每30秒执行一次:
rjee0c155#
编写了一个实用程序来安排作业运行一次并按循环间隔运行。这比手动启动作业有优势,因为第一次运行将在主线程之外进行。