Pythonのscheduleライブラリでジョブの頻度を変更しながら定期実行する

scheduleライブラリで定期実行するジョブ頻度を時間帯によって変化させたい。例えば日中は高頻度で処理を行わせるが夜になったら低頻度にするというふうに。

例:毎時0秒からは10秒ごと、30秒からは5秒ごと、45秒からは1秒ごとにジョブを実行する。

import schedule as s
import time, datetime

def child_job():
    print(datetime.datetime.now().second)

def job(sec):
    s.clear('child')
    s.every(sec).seconds.do(child_job).tag('child')

s.every().minute.at(":00").do(job, 10)
s.every().minute.at(":30").do(job, 5)
s.every().minute.at(":45").do(job, 1)

while True:
    s.run_pending()
    time.sleep(1)

実行結果

10
20
30
35
41
46
47
48
49
50
51
52
53
54
55
56
57
58
59
0
10

環境

参考