使用 python 的 schedule 模块,我如何在特定时间开始工作,并且应该定期安排它。
假设我想从上午 09:00 开始每 4 小时安排一次任务。
schedule.every(4).hours.at("09:00").do(task) # This doesn't work
如何实现上述目标?
使用 python 的 schedule 模块,我如何在特定时间开始工作,并且应该定期安排它。
假设我想从上午 09:00 开始每 4 小时安排一次任务。
schedule.every(4).hours.at("09:00").do(task) # This doesn't work
如何实现上述目标?
您可以将内部时间表(每 4 小时)转换为一个单独的函数,该函数将由主时间表(固定时间)调用。内部调度功能将是调用您的工作功能的功能。
例子 -
import schedule
import time
def job():
print "I am working" #your job function
def schedule_every_four_hours():
job() #for the first job to run
schedule.every(4).hour.do(job)
return schedule.CancelJob
schedule.every().day.at("09:00").do(schedule_every_four_hours)
while True:
schedule.run_pending()
time.sleep(1)
如果您想根据您的要求取消日程安排,请在此处阅读更多信息。在这里检查。
如果有多个计划,上述解决方案将不起作用,因为 schedule.CancelJob 将取消管道上的其他计划,最好使用 clear tag
import schedule
from datetime import datetime
import time
def task():
print 'I am here...',datetime.now()
def schedule_every_four_hours(clear):
if clear =='clear':
schedule.every(2).seconds.do(task).tag('mytask1') #for the first job to runschedule.every(4).hour.at("9:00").do(task)
else:
schedule.every(5).seconds.do(task).tag('mytask2') # for the second job to runschedule.every(4).hour.at("9:00").do(task)
print clear
schedule.clear(clear)
now = datetime.now()
times = str(now.hour+0)+ ":"+str(now.minute+1)
times1 = str(now.hour+0)+ ":"+str(now.minute+3)
schedule.every().day.at(times).do(schedule_every_four_hours,'clear').tag('clear')
schedule.every().day.at(times1).do(schedule_every_four_hours,'clear1').tag('clear1')
while True:
schedule.run_pending()
time.sleep(1)