python-crontabの使い方|PythonでCronの設定をする方法

スポンサーリンク

今日は、興味深いスケジューリング・モジュールであるPythonのcrontabについてお話ししましょう。

POSIX、つまりWindowsオペレーティング・システムでは、cronのサポートがかなり不足していることを特筆しておきます。

そのため、この記事の例では、Linuxを使用しています。

スポンサーリンク

Python crontab入門

もしあなたがdatetimeモジュールやschedモジュールを使ったことがあるなら、ある時点で警告をスケジュールしたいと思ったことがあるはずです。

このような機能の拡張がどのように継続されるかを考えたことがあるなら、同じイベントを継続的、反復的にデプロイするスクリプトを書くことができるという結論に達したこともあるはずです。

このようなことを単純化すると、自分のタスクを自動化するのはどうだろうという疑問が湧いてくるかもしれません。

さて、良いニュースです。

cronはコマンドをスケジューリングする機能で、特定の間隔や時間にコマンドを実行することを支援します。

cronとは?

UNIX系OSに存在する機能で、時間ベースのジョブスケジューラー、それがcronです。

ソフトウェア開発環境では、自分で設定した日時や間隔で定期的に実行するジョブをスケジュールするために使用されます。

Pythonのcrontabの構文

Cronを説明するには、それだけで1つの記事が必要です。

そこで、ここで扱うもののアイデアを得るのに役立つ記事を紹介します。

Crontabは、スケジューリングした、あるいはスケジューリングする予定のすべてのジョブを含むものです。

もし、クーロンタスクの作成で問題に直面したら、構文を理解するのに役立ついくつかのオンラインツールを試してみる必要があります。

もし問題に直面したら、crontab.guruをチェックして、タスクを作成してみてください。

Pythonのcrontabモジュールで作業する

Python-crontab`モジュールは、cronジョブの作成プロセスをよりシンプルにするためのものです。

これは、cronの構文を全く使わずに、直接入力を受け取るシンプルなクラスを提供します。

python-crontabのインストール

Pythonでcronやcrontabを使うためには、まず必要なモジュールをインストールする必要があります。

これはシェルのpipパッケージマネージャコマンドで行うことができます。

pip install python-crontab


これで自動的に必要なモジュールがインストールされ、インストールが完了したら、すぐに使えるようになります。

python-crontabを使う

さっそくこのモジュールの作業に入り、最初のタスクをスケジューリングしてみましょう。

1.0 セットアップ

Crontabの式とタスクを扱う前に、まず必要なモジュールをインポートする必要があります。

# Importing the CronTab class from the module
from crontab import CronTab

1.1 オブジェクトの作成

Pythonのcrontabで作業するために、ジョブの作成とその再帰を行うためのオブジェクトを設定する必要があります。

# Creating an object from the class
## Using the root user
cron = CronTab(user="root")
 
## Using the current user
my_cron = CronTab(user=True)
 
# Creating an object from the class into a file
file_cron = CronTab(tabfile="filename.tab")

1.2 ジョブの操作

python-crontab` モジュールを使用すると、ジョブを作成し、それをいつ繰り返すか、どの間隔で繰り返すかを指定することができます

このモジュールはこれらのタスクの作成の大部分を簡略化し、機能的な入力から crontab に変えてくれます。

# Creating a new job
job  = cron.new(command='echo hello_world')
 
# Setting up restrictions for the job
## The job takes place once every 5 minutes
job.minute.every(5)
 
## The job takes place once every four hours
job.hour.every(4)
 
## The job takes place on the 4th, 5th, and 6th day of the week.
job.day.on(4, 5, 6)
 
# Clearing the restrictions of a job
job.clear()

ジョブの制限を変更するたびに、ジョブが消去され、新しい制限に置き換わることに留意してください。

1.3 crontab ファイルへの書き込み

最終的には、与えられた制限の cron 形式を提供するためにこれらのジョブを作成し、ファイルに書き込むためには、オブジェクトが自分自身をファイルに書き込むように手動で命令する必要があります。

これは、ジョブの制限を設定する最後にある簡単なコマンドで実行できます。

cron.write()

振り返ってみると、cron は CronTab クラスから作成したオブジェクトの名前であることがわかります。

1.4 CronTabファイル

新しい制限を設定するたびにPythonファイルを実行すると、きれいなCronTabは以下のような感じになるはずです。

*/5 * * * * echo hello_world
*/5 */4 * * * echo hello_world
*/5 */4 4,5,6 * * echo hello_world

まとめ

タスクやジョブを設定する日時を決定するのに役立つモジュールについて調べたい場合は、他の記事にも興味があるかもしれません。

そして、もしあなたが何らかの理由でデータセットを自動化しようとしていて、出発点が必要な場合は、pandasです。

参考文献

  • python-crontab 公式ドキュメント
  • Cron 式を使う
タイトルとURLをコピーしました