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

この投稿は最終更新日から1年以上経過しています

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

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

import time
import datetime
import schedule as s

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

環境

参考