Pythonで作業効率化

python-crontabライブラリの使い方〜Pythonでタスクスケジュール制御〜

本記事は、Pythonでタスクスケジュールを制御できるライブラリ「python-crontab」について説明します。

crontabは特定の時刻になった時に特定の処理やスクリプトを実行可能にする機能です。
「python-crontab」は、crontabをPythonで操作することを可能としたライブラリです。

今回は「python-crontab」の活用方法の一つである「Python単独でタスクスケジュールを管理する」方法について説明します。

あわせて読みたい
似たようなことができるライブラリです。
【Python】Scheduleライブラリでタスクスケジュールを管理する

python-crontabの使い方

「python-crontab」の基本的な使い方について紹介します。

導入方法

導入方法は他のライブラリと同様pipコマンドを実行すればOKです。

インストールはターミナルを開いて以下のコマンドを実行します。

pip install python-crontab

python-crontabライブラリのcrontabジョブ作成の流れ

python-crontabで新規crontabジョブを生成する流れについて説明します。

crontabジョブ生成に必要な処理は以下の3つです。

・新規ジョブを生成する
・ジョブにスケジュールを設定
・ジョブをタブファイルに保存

新規ジョブを生成する

まずはジョブを生成してコマンドを設定します。

ジョブの生成はnew()メソッドを使用します。
コマンドはターミナルのコマンドラインで実行できるコマンドです。

今回は「helloworld.py」というファイルを実行してその結果をテキストファイルに出力します。

◆helloworld.pyの記述内容

print("Hello World")

コマンド設定の実行例は以下の通りです。

ジョブにスケジュールを設定

次にジョブにスケジュールを設定します。

設定は生成したjobのメソッドsetall()を使用します。

パラメータの表記方法は基本的にOSの「crontab」と同じで、右から、「分 時 日 月 曜日」の指定となります。

毎日10時にスケジュールを実行する場合の設定例です。

job.setall('0 10 * * *')

jobには「hour」、「minute」などのメソッドがあり細かく設定できますが、いろいろ覚えるとかえってややこしくなるので、まずは「setall()」の使い方だけ覚えておけば十分だと思います。

ジョブをタブファイルに保存

最後に設定したジョブの内容をファイルに保存します。

保存にはwrite()メソッドを使用します。
ファイル名はなんでも大丈夫です。

ファイルは上書きされるので保存する場合は先にファイルを読み込んでおきましょう。

cron.write('output.tab')

◆output.tabの出力内容

* * * * * python3 ./helloworld.py > ./test.txt

以上でジョブの作成は完了です。
ジョブを追加する場合は「cron.new()」で再度ジョブ生成してください。

python-crontabライブラリのジョブ監視と実行の流れ

crontabジョブを監視する方法について説明します。

必要な処理は以下の2つです。

・ファイルから全ジョブを読み込む
・スケジュール実行の時間になるまで監視

ファイルから全ジョブを読み込む

※「ジョブ作成の流れ」から実行する場合はこのステップを飛ばしてもOKです。

まずはファイルから全てのジョブを読み込みます。
ファイル名を指定してインスタンスを生成するとファイル内の全ジョブを読み込むことが可能です。

cron = CronTab(tabfile=file_name)

スケジュール実行の時間になるまで監視

ジョブを読み込んだらスケジュールの監視を開始します。
記述は以下の通りです。

以上で監視状態に入ります。指定した時間になったらコマンドが自動的に実行されます。

python-crontabライブラリを使用するためのクラス

今までの処理を以下のクラスにまとめました。

このクラスの使い方

●Jobを生成する
1.インスタンスを生成します。
2.コマンド、スケジュール、ファイル名を指定してwrite_job()メソッドをコールします。
※ファイル名は任意です。スケジュールの記述方法はOSのcrontabと同じです。

●スケジュールを開始する
1.タスクスケジュールを記述したファイルを指定してread_jobs()をコールします。
2.monitor_start()をコールします。

以上で監視状態となり、指定した時刻になるとコマンドが実行されます。

◆実行例

以上、python-crontabの使用方法とコードの作成例でした。

「python-crontab」はOSのcrontabの操作も可能なツールなので機会があればそちらの実装方法も紹介したいと思います。

Pythonでスケジュール管理する方法については以下の記事にまとめています。
Pythonでスケジュール管理する方法まとめ

こちらの記事も読まれています

  • この記事を書いた人

みやびの

住んでいるところ:神奈川県。 プログラミング歴は13年ほど。 ※プログラミングに関する無料相談・質問への回答は行っていません。

-Pythonで作業効率化

Copyright© みやびのどっとぴーわい , 2024 All Rights Reserved Powered by AFFINGER5.