PythonのSchedularのようなCron

Atika Islam 2024年2月15日
  1. Python の cron および scheduler モジュール
  2. schedule モジュールでジョブをスケジュールする
PythonのSchedularのようなCron

このチュートリアルでは、Linux の cron ジョブに似たタスクのスケジューリングについて説明します。 まず、インプロセス スケジューラでジョブをスケジュールする schedule モジュールを見ていきます。

Python の cron および scheduler モジュール

Python は、タスクを自動的にスケジュールできるいくつかのパッケージを提供します。 これらのパッケージには scheduletime が含まれます。

cron は、タスクのスケジューリングと自動化に使用されます。 たとえば、特定の時間間隔が経過すると、特定のジョブが自動的に実行を開始します。

多くの場合、手動の介入を必要とせずに定期的に多くのタスクを実行する必要があります。 これは、タスク スケジューラを使用して実現できます。

スケジューリングは、データベースに保存されたデータの管理に役立ち、容易にします。 また、必要に応じて定期的にデータを取得することもできます。

Python の schedule モジュールは、構成に従って実行するタスクをスケジュールする高度なスケジューリング モジュールです。

cron は時間ベースのスケジューラです。 定期的に実行する必要があるジョブをスケジュールするのに役立ちます。 Linux cron ユーティリティの一部である crontab ファイルには、スケジュールされたタスクのリストが含まれています。

cron でタスクをスケジュールするには、Bash コマンド crontab -e または Python の python-crontab モジュールを使用して、このファイルを直接編集できます。 ただし、これらのスケジューリング スキームは Windows オペレーティング システムでは使用できません。

schedule は、システムの時間間隔に従って動作するライブラリです。 インプロセス スケジューラとして機能し、ほぼすべてのオペレーティング システムで動作します。

1 日または 1 週間の特定の時間など、特定のタスクをさまざまな時間間隔でスケジュールするのに役立ちます。 それでは、新しい python プロジェクトを作成することから始めましょう。

schedule モジュールでジョブをスケジュールする

以下の手順に従って、新しい Python プロジェクトを作成します。

  • 最初のステップは、anaconda プロンプトをインストールすることです。
  • 次に、プロンプト画面でJupyter notebookと入力します。

    python の schedular のような cron - anaconda プロンプト

  • ブラウザ上に Jupyter ノートブックのこの home ページが表示されます。

    python の schedular のような cron - ホームページ

  • New をクリックし、Python 3 ファイルを作成します。

    python の schedular のような cron - 新しい python ファイル

  • Python ファイルは次のように表示されます。

    python の schedular のような cron - python ファイル

  • schedule モジュールの機能を使用する前に、まず schedule モジュールをインストールする必要があります。
    pip install schedule
    
  • 必要なモジュールをインポートしたら、ジョブを作成して スケジュール するコードを見てみましょう。
    import schedule
    import time
    
    
    def job():
        print("Reading time...")
    
    
    def coding():
        print("Programming time...")
    
    
    def playing():
        print("Playing time...")
    
    
    # Time
    schedule.every(5).seconds.do(job)
    schedule.every(2).minutes.do(coding)
    schedule.every().day.at("10:57").do(playing)
    while True:
        schedule.run_pending()
        time.sleep(1)
    

    このコードでは、3つの異なるジョブが定義されています。 最初のジョブ読み取り時間5秒ごとに繰り返され、2 番目のジョブコーディング2分ごとに繰り返され、最後のジョブは特定の時間になると繰り返されます。

    while ループ内の Schedule.run_pending() 関数は、実行が保留されているスケジュールされたジョブがあるかどうかをチェックします。 関数 time.sleep(1) が実行されると、保留中のタスクをチェックするために schedule を 1 秒間遅らせます。

    出力:

    python の schedular のような cron - 出力

    数時間後や数分後に特定のジョブを実行するようにスケジューラーに依頼することもできます。 たとえば、schedule.every(5).hours.do(job) ステートメントは、5 時間ごとにジョブを繰り返します。

関連記事 - Python Cron