タダケンのEnjoy Tech

楽しみながらラクに成果を上げる仕組みを考える

scheduleライブラリを使ってPythonスクリプトを定期実行しよう

f:id:tadaken3:20180730005910p:plain こんにちは!
タダケン(@tadaken3)です。

定期実行といえば真っ先にcronが思い浮かびますが、scheduleはcronを代替するPythonライブラリです。cronにくらべ読みやすく、非常にシンプルです。

windowsでも動作しますし、cronが使えない環境なんかでちょっとした処理をPythonで実行できたりするので、便利です。

scheduleのコンセプト

ジョブのスケジュール実行は、標準モジュールを駆使して、実装することも可能です。ですが、scheduleを使うことでコードを非常にシンプルに保つことができます。

scheduleは「Python job scheduling for humans.」というコンセプトで作成されたライブラリです。直訳すると「人間のためのジョブスケジューラ」でしょうか。Rubyのclockworkにインスパイアされて作成されたようです。

けっこう便利のライブラリなのですが、Qiitaとかを見ていると、自前で実装しているケースがよく見られるので、scheduleの紹介記事を書いてみました。

scheduleを使ってみる

pipをつかってscheduleをインストール

$pip install schedule

scheduleライブラリの書き方は非常にシンプルです。以下のように処理時間を細かく指定して実行できます。

#coding:UTF-8
import schedule
import time

def job():
    #ここにメインの処理を書く
    print("時間ですよ~")

#10分毎にjobを実行
schedule.every(10).minutes.do(job)

#毎時間ごとにjobを実行
schedule.every().hour.do(job)

#AM10:30にjobを実行
schedule.every().day.at("10:30").do(job)

#月曜日にjobを実行
schedule.every().monday.do(job)

#水曜日の13:15にjobを実行
schedule.every().wednesday.at("13:15").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

scheduleを使うと簡単にジョブスケジューラを実装することができます。windowns環境でcronが使えなかったりするときに、pythonで処理をスケジュール実行できるので便利です。

僕の場合、スクレイピングとか定期的に走らせたいときに重宝しています。

参考資料

最後に少しお願いです。

ここまで読んでいただきありがとうございます。

最後にあなたに少しお願いがあります。この記事が少しでも役に立った、気付きがあったという方は、ぜひこの記事をTwitterにシェアしていただきたいです。

はてなブックマークをしていただく形でも大丈夫です。コメント付きだと、もっと嬉しいです。

ぜひ、よろしくお願いいたします。