PythonでAPSchedulerを用いて定期的なスケジュールを設定し処理を実行してみます。
今回はAPSchedulerを用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.7.9」を使用しています。(Windows10)(pythonランチャーでの確認)
■APSchedulerを用いて定期的なスケジュールを設定し処理を実行する
では、APSchedulerを用いて定期的なスケジュールを設定し処理を実行するスクリプトを書いていきます。
■コード
from datetime import datetime from datetime import date from apscheduler.schedulers.blocking import BlockingScheduler def job(text): print("こんにちは世界") scheduler_test = BlockingScheduler() scheduler_test.add_job(job,'date',run_date='2022-2-9 07:39:00',args=['test1']) scheduler_test.add_job(job,'date',run_date='2022-2-9 07:40:00',args=['test2']) scheduler_test.start()
「from import」でPythonの標準ライブラリであるdatetimeモジュールのdatetime,dateと、apscheduler.schedulers.blockingのBlockingSchedulerを呼び出します。
呼び出し後に、def文を用いてスケジュールを設定した後に、呼び出す関数を定義します。今回はjobという関数を定義し、括弧内に引数,パラメータとしてtextを設定します。関数を呼び出した後に、実行される処理としては、print()で文字列を出力するようにします。
その後、scheduler_testという変数を定義し、その中にBlockingScheduler()を格納します。単純なスケジューラーを作ります。
スケジューラーのジョブリストにadd_job()を用いて、ジョブを追加します。括弧内の第1の引数,パラメータには、ジョブとしてjob変数を渡します。その他に関数が実行される時間(日時)を渡し、関数を呼び出すための位置引数なども引数,パラメータに設定し渡します。
最後に、スケジューラーを開始するために、start()を用いてスケジューラーを開始させます。
■実行・検証
このスクリプトを「scheduler.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
C:\Users\user_\AppData\Roaming\Python\Python37\site-packages\apscheduler\util.py:95: PytzUsageWarning: The zone attribute is specific to pytz’s interface; please migrate to a new time zone provider. For more details on how to do so, see https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
if obj.zone == ‘local’:
C:\Users\user_\AppData\Roaming\Python\Python37\site-packages\apscheduler\util.py:166: PytzUsageWarning: The localize method is no longer necessary, as this time zone supports the fold attribute (PEP 495). For more details on migrating to a PEP 495-compliant implementation, see https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
return tz.localize(datetime_, is_dst=None)
実行してみると、「PytzUsageWarning」という警告が出力されました。出力されましたが、スケジューラーに追加したジョブは実行され、今回定義した関数の処理も、指定した時間(日時)で実行されることが確認できました。
今回発生した「PytzUsageWarning」という警告を調べてみると、タイムゾーンに設定する必要、もしくはtzlocalをダウングレードすると、改善できるようです(https://blog.csdn.net/weixin_43937959/article/details/121765270)が、今回は行わず、今回の検証はここまでとします。改善できるかは、また後日行う予定ではありますが、いつかは未定です。
コメント