立即使用模块计划运行计划,然后每小时一次

时间:2020-02-21 00:36:15

标签: python-3.x schedule

我正在尝试每小时使用“计划”模块计划一项任务。我的问题是我需要先运行任务,然后每小时重新运行一次。

此代码可以正常工作,但需要等待一个小时才能首次运行

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()

2 个答案:

答案 0 :(得分:0)

最简单解决方案可能是立即运行它并对其进行调度,例如:

import schedule
import time

def job():
    print("This happens every hour")

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

job()                       # Runs now.
while True:
    schedule.run_pending()  # Runs every hour, starting one hour from now.

答案 1 :(得分:0)

要运行所有作业,无论它们是否计划运行,请使用 schedule.run_all()。作业在完成后重新安排,就像使用 run_pending() 执行一样。


def job_1():
    print('Foo')

def job_2():
    print('Bar')

schedule.every().monday.at("12:40").do(job_1)
schedule.every().tuesday.at("16:40").do(job_2)

schedule.run_all()

# Add the delay_seconds argument to run the jobs with a number
# of seconds delay in between.
schedule.run_all(delay_seconds=10)```