Pythonのscheduleを使って周期的に関数を実行する
auです。
DockerからPythonファイルを実行する際に、周期的に行う必要がありました。
過去に、Cronを使って似たようなことをやっていたので調べてみましたが、手間がすごそうです・・・。
正直timeモジュールとか使えばすぐに実装できるので、コンテナごと管理しなくてはならないという風にならない限りは、低コストな方法でやろうと思いました。
その際に見つけたのが、scheduleとtimeを使った実装です。
やり方
パッケージをインストール
pip install schedule
import schedule import time def schedule_job(): print('hoge') return 0 schedule.every(1).minutes.do(schedule_job) # 1分ごとにschedule_job関数を実行する。 # 実行するタイミングか確認するためのループ while True: schedule.run_pending() time.sleep(1)
計算量的に大きそうだけどとりあえず完成しました。実行するタイミングをwhileループで確認しているようです。sleepが必要な理由は、ずっと見ていると無駄が多いからです。なくても実行はしますが、あった方が処理的には優しいです。