cronpiとは
crontabの処理がもっと簡単に管理できないかと色々悩んだ結果、Pythonでパッケージを作ることにしました。本当は名前を「cronpy」にしたかったのですが、すでにほかの方が登録していたので「cronpi」にしました。
cronpiとはUNIX系のパソコン(linux/mac)で定期的に実行する処理をcrontabに登録するパッケージです。Python2系と3系で動きます。
crontabの処理を読みやすくしてくれます。
Installation
pip install cronpi
サンプル
# パッケージのインポート
import cronpi
# 毎日午後5時半に実行する処理を登録
cronpi.run_every_day("/opt/backup.sh").on("5:30pm")
機能一覧
cronpiは以下の機能のもつ関数をもちます。
SN | 関数名 | 説明 |
---|---|---|
1. | run_by_date | 日付をYYYY-MM-DD HH:mmに指定して実行できる処理 |
2. | run_every_day | HH:mmに時間を指定する事で毎日できる処理 |
3. | run_every_week | 曜日名を指定して実行できる処理 |
4. | run_every_month | 日にちを指定して実行できる処理 |
5. | run_every_year | 月の名前と日を指定して実行できる処理 |
6. | run_custom | "crontab -e" に入力する1行の内容を指定して実行できる処理 |
上記の関数が二つの引数を受け付けます。
cronpi.XXXX(<command>, <isOverwrite=bool>?)
parameter | type | description |
---|---|---|
command | string | 定期的に実行するコマンド |
isOverwrite | bool | falseの場合は、常に新しいジョブを追加します。デフォルトはFalse |
第1引数のコマンドがすでにジョブに存在しかつ、第2引数がisOverwrite=Trueの場合は、新しいジョブではなく既存の内容を新しい内容に変えます。
使い方
① 一度のみ実行する処理
・日付を指定して実行する処理の登録
cronpi.run_by_date("/some/command").on("2020-10-20 5:30pm")
※ Cronの仕様上「年」の指定ができないため、2020年以降も毎年実行されます。
実行後1年以内に手動で削除する必要があります。
② 毎日実行する処理
・毎日実行する処理の登録
cronpi.run_every_day("/some/command").on("5:30pm")
③ 毎週実行する処理
・毎週特定の曜日に実行する処理の登録
cronpi.run_every_week("/some/command").on("sunday", time="17:30")
・複数曜日の指定も可能
cronpi.run_every_week("/some/command").on(["sat", "sun"], time="5:30PM")
④ 毎月実行する処理
・毎月実行する処理の登録
cronpi.run_every_month("/some/command").on(10, time="17:30")
・ 複数日の指定も可能
cronpi.run_every_month("/some/command").on([10,20], time="17:30")
⑤ 毎年実行する処理
・特定の月で実行する処理の登録
cronpi.run_every_year("/some/command").on("january", day=10, time="5:30am")
・複数の月の登録が可能
cronpi.run_every_year("/some/command").on(["jan", "oct"], day=10, time="5:30")
⑥ カスタム処理
・カスタム登録
cronpi.run_custom("* * * * * /some/command")
補足
「get_job_list」関数を使う事で現在のジョブの一覧をListとして取得する事ができます。
cronpi.get_job_list()