我正在使用schedule库来安排Python脚本。
我想要实现的是每小时上下运行的工作(即...... 10:00,10:30,11:00 ......)。
我试过以下内容:
schedule.every(30).minutes.do(job)
时,作业开始的时间取决于程序何时启动(如果它在10:17运行,它将在10:47,11:17等运行),这不是我需要的。schedule.every().hour.at(":30").do(job)
方法,但它不跨越:00
s。因此,我寻求一种惯用的,或者至少是一种利用这个库来实现它的方法。有吗?
一种方法是终止上一个计划流程并以新的时间开始新计划流程。为了指定下一次,我实现了一个不那么整洁的功能。
import schedule
# an arbitrary start time
start = '11:30'
def next_time(start):
''' This function gives the next time. eg '13:00'->'13:30', '24:30'->'01:00' '''
comp = start.split(':')
if '30' in comp[1]:
comp[1] = '00'
comp[0] = str(int(comp[0]) + 1)
else:
comp[1] = '30'
if int(comp[0]) > 24:
comp[0] = '01'
return ':'.join(comp)
def job(time_now):
print("The job has been done!")
# kill the previous schedule, specified with a tag
schedule.clear('previous')
# the new time is calculated by next_time function
next_point = next_time(time_now)
# return a new one with the new time for the scheduled job
return schedule.every().day.at(next_point).do(job, next_point).tag('previous')
# implementing the schedule for first time
schedule.every().day.at(start).do(job, start).tag('previous')
while True:
schedule.run_pending()
time.sleep(1)