我希望每天早上 6 点启动我的主要任务。但出于测试目的,我将间隔设置为 5 秒。问题是它似乎永远不会开火。我在 maintask 方法中有一个从未到达的断点,并且没有任何内容打印到控制台。我假设它没有运行。
预计到达时间: 我的代码到达 scheduler.start() 那里停止,因为它正在阻塞。它应该在 5 秒内开始我的主任务,但它从来没有。
python版本是2.7 apscheduler 版本为 3.0
我已经在 Windows 和 Debian 上运行了同样的结果。
这是我的代码。
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
def maintask():
print("blah")
def main():
scheduler = BlockingScheduler()
print("Scheduling Tasks")
start_time = (datetime.datetime.now()).replace(hour=6, minute=0, second=0, microsecond=0)
scheduler.scheduled_job(maintask, 'interval', id="MainTaskid", name="mainTask", start_date=start_time, seconds=5, misfire_grace_time=60)
print("Tasks Scheduled")
print("Running Tasks")
scheduler.start()
print("Good Bye")
return 0
if __name__ == "__main__":
main()
最佳答案
问题是您使用的是 scheduled_job
而不是 add_job
.
作为User Guide解释说,scheduled_job
主要用作装饰器,作为“方便声明在应用程序运行时不会更改的作业”,而后者是“最常见的方式”添加工作。
在这种特殊情况下,我认为问题在于 add_job
强制唤醒调度程序,而 scheduled_job
没有——你不会认为是相关的,除了您依靠唤醒来强制在启动时运行失火检查而不是明天早上 6 点之前运行的事实。
无论如何,只需将其更改为 add_job
即可解决问题。
关于python - apscheduler 间隔任务未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26497546/