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ループによる保留は止まらない。全ジョブ完了後にスクリプトを終わらせるためにブレイクポイントを適宜作っておく。
環境
- Python 3.7.9
- schedule 1.0.0