auの日記

プログラミング初心者の日記。(auはハンドルネームです)

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が必要な理由は、ずっと見ていると無駄が多いからです。なくても実行はしますが、あった方が処理的には優しいです。