如何安排特定时间和间隔的工作?

问题描述 投票:0回答:2

使用python schedule模块如何在特定时间开始工作,应该定期安排。

假设我想从上午09:00开始每4小时安排一次任务。

schedule.every(4).hours.at("09:00").do(task) # This doesn't work

如何实现上述目标?

python scheduled-tasks
2个回答
1
投票

您可以将内部时间表(每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)

如果您想根据您的要求终止计划,请在此处阅读更多内容。 Check here


0
投票

如果有多个时间表,上述解决方案将无效,因为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)
© www.soinside.com 2019 - 2024. All rights reserved.