★悩み★
・Pythonで作成した関数を20分間隔で処理できないのかな?
・Pythonで作成した関数を毎日20時に実行する方法を知りたい。
・PythonのAPSchedulerライブラリで処理を定期実行する手順を知りたい。
こういった「悩み」に答えます。
★本記事の内容★
① PythonのAPSchedulerで処理を定期実行するための準備を解説
② PythonのAPSchedulerで処理を定期実行する手順を解説
これからご紹介する「【10行で実現】PythonのAPSchedulerで処理を定期実行する手順」を実践したことで、筆者は15分以内で「APSchedulerライブラリを使ってPythonの処理を定期実行」できました。
記事の前半では「PythonのAPSchedulerで処理を定期実行するための準備」を解説します。記事の後半では「PythonのAPSchedulerで処理を定期実行する手順」を紹介します。
この記事を読み終えることで、「APSchedulerライブラリを使ってPythonを定期実行できる」状態になります。
★APSchedulerとは★
APScheduler(Advanced Python Schedulerの略称)は、Pythonで作成した関数や処理を「1回だけ」または「定期的にスケジュール」できるPythonライブラリです。
参照:APSchedulerとは(公式サイト)
PythonのAPSchedulerで処理を定期実行するための準備
「PythonのAPSchedulerで処理を定期実行するための準備」に関してご紹介します。
★PythonのAPSchedulerで処理を定期実行するための準備の流れ★
手順1:Pythonをインストール
手順2:Pythonの「APScheduler」ライブラリをインストール
上記手順を実施することで、「PythonのAPSchedulerで処理を定期実行するための準備」ができます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年12月2日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、上記「PythonのAPSchedulerで処理を定期実行するための準備の流れ」の各手順に関してご説明します。
手順1:Pythonをインストール
「手順1:Pythonをインストール」に関して解説します。
APSchedulerをインストールするためにも、Pythonをインストールしましょう。
以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。
>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】
>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照
>> 【環境構築】インストーラーでMacOSにPythonをインストール
既にPythonをインストールされている方は、本手順を省略してください。
以上で、「手順1:Pythonをインストール」は完了です。
手順2:Pythonの「APScheduler」ライブラリをインストール
「手順2:Pythonの『APScheduler』ライブラリをインストール」に関して解説します。
Pythonで作成した処理を定期実行するために、Pythonライブラリである「APScheduler」をインストールしましょう。
APSchedulerをインストールするために、「端末」または「コマンドプロンプト」を起動し、以下のコマンドを順に実行しましょう。
# pip install apscheduler
# pip list | grep -i apscheduler
APScheduler (3.8.1)
#
コマンンド実行後、「APScheduler(バージョン)」が表示された場合、「正常にAPSchedulerライブラリをインストールできた」と判断できます。
以上で、「手順2:Pythonの『APScheduler』ライブラリをインストール」は完了です。
上記の流れで、PythonのAPSchedulerで処理を定期実行するための準備ができました。
PythonのAPSchedulerで処理を定期実行する手順
「PythonのAPSchedulerで処理を定期実行する手順」に関してご紹介します。
★PythonのAPSchedulerで処理を定期実行する流れ★
手順1:PythonのAPSchedulerで処理を定期実行するプログラムを作成
手順2:APSchedulerで処理を定期実行するPythonプログラムの動作確認
上記の流れで、「APSchedulerでPythonの処理を定期実行」できます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年12月2日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、上記「PythonのAPSchedulerで処理を定期実行する流れ」の各手順に関してご説明します。
手順1:PythonのAPSchedulerで処理を定期実行するプログラムを作成
「手順1:PythonのAPSchedulerで処理を定期実行するプログラムを作成」に関してご説明します。
「APSchedulerでPythonの処理を定期実行する」プログラムを作成しましょう。
「PythonのAPSchedulerで処理を定期実行する」プログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。
import datetime
## APSchedulerライブラリをインポート
from apscheduler.schedulers.blocking import BlockingScheduler
## 定期実行したい処理を関数化(処理内容は適宜変更)
def job_0():
now = datetime.datetime.now()
print("job_0を実行しました。" + now.strftime('%Y-%m-%d %H:%M:%S'))
def job_1():
now = datetime.datetime.now()
print("job_1を実行しました。" + now.strftime('%Y-%m-%d %H:%M:%S'))
## APSchedulerの変数を定義
scheduler = BlockingScheduler()
## APSchedulerで実行したい関数を登録(5秒間隔で実行)
scheduler.add_job(job_0, 'interval', seconds=5)
## APSchedulerで実行したい関数を登録(毎時10分に実行[例:8時10分に実行])
scheduler.add_job(job_1, 'cron', minute=32)
## APSchedulerを実行
scheduler.start()
上記のプログラムを「python-apscheduler.py」というファイル名で保存しましょう。
★add_jobに指定できる値について★
第1引数:定期実行したい関数を指定
第2引数:どのようなルールで定期実行するかを指定
cron:時間を指定して定期実行する場合
date:日時を指定して定期実行する場合
interval:間隔を指定して定期実行する場合
第3引数以降:第2引数で指定したルールが利用する値を指定
より詳細にadd_jobに関して知りたい方は、以下を参照してください。
参照:add_jobのAPIリファレンス(公式サイト)
ちなみに、ある関数をバックグラウンドで定期実行したい場合は、「scheduler = BackgroundScheduler()」を使います。
★BackgroundSchedulerとBlockingSchedulerの違い★
・BlockingScheduler
指定された処理をフォアグラウンドで定期実行する。
start()は、定期処理が終わるまたは停止されるまで返却されません。
参照:BlockingSchedulerの仕様(公式サイト)
・BackgroundScheduler
指定された処理をバックグラウンドで定期実行する。
start()は、定期処理が終わる前に返却されます。
参照:BackgroundSchedulerの仕様(公式サイト)
以上で、「手順1:PythonのAPSchedulerで処理を定期実行するプログラムを作成」は完了です。
手順2:APSchedulerで処理を定期実行するPythonプログラムの動作確認
「手順2:APSchedulerで処理を定期実行するPythonプログラムの動作確認」に関して解説します。
Pythonで作成した「APSchedulerで処理を定期実行する」プログラムの動作を確認しましょう。
Pythonで作成した「APSchedulerで処理を定期実行する」プログラムの動作を確認するために、以下のコマンドを実行してください。
# python python-apscheduler.py
job_0を実行しました。2021-12-02 11:31:36
job_0を実行しました。2021-12-02 11:31:41
job_0を実行しました。2021-12-02 11:31:46
job_0を実行しました。2021-12-02 11:31:51
job_0を実行しました。2021-12-02 11:31:56
job_1を実行しました。2021-12-02 11:32:00
job_0を実行しました。2021-12-02 11:32:01
job_0を実行しました。2021-12-02 11:32:06
コマンド実行後、「定期的に文字列」が表示された場合、「正常にPythonのAPSchedulerで処理を定期実行できた」と判断できます。
以上で、「手順2:APSchedulerで処理を定期実行するPythonプログラムの動作確認」は完了です。
上記の流れで、PythonのAPSchedulerで処理を定期実行できました。
【まとめ】PythonのAPSchedulerで処理を定期実行する手順【10行で実現】
いかがでしたでしょうか?「定期的に処理を実行できるPythonのAPSchedulerライブラリをインストールする手順」、「APSchedulerライブラリを用いて処理を定期実行する流れ」を解説し、以下の悩みを解決しました。
★悩み★
・Pythonで作成した関数を20分間隔で処理できないのかな?
・Pythonで作成した関数を毎日20時に実行する方法を知りたい。
・PythonのAPSchedulerライブラリで処理を定期実行する手順を知りたい。
「APSchedulerライブラリ」を利用するだけで、「毎日20時に処理を定期実行する」や「5秒毎に処理を定期実行する」ができます。ぜひあなたも本記事を参考に「PythonのAPSchedulerで処理を定期実行」を実践してください。