Pythonのscheduleライブラリで1回だけのジョブを実行する

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

定期実行ではなく1回だけのジョブをscheduleライブラリで行いたいなら関数の戻り値にschedule.CancelJobを与える。

import time
import schedule

def job():
    print('hoge')
    return schedule.CancelJob

schedule.every().day.at('07:00').do(job)
schedule.every().day.at('12:00').do(job)
schedule.every().day.at('19:45').do(job)

while True:
    n = schedule.idle_seconds()
    if n is None:
        break
    elif n > 0:
        time.sleep(n)
    schedule.run_pending()

schedule.CancelJobは文字通りそのジョブがスケジュールからキャンセルされるだけなのでwhileループによる保留は止まらない。全ジョブ完了後にスクリプトを終わらせるためにブレイクポイントを適宜作っておく。

環境

参考