Pythonのタスクスケジューリングモジュール - APScheduler

APScheduler Pythonはあるタイミングタスクフレームワークを使用することは非常に便利で、。これは、日付に基づいて一定の時間間隔とcrontabのタスクを入力し、タスクが永続することができ、デーモンモードのアプリケーションで実行して設けられます。


        中APSchedulerの4つのコンポーネントがあります。 

        トリガー(引き金)は、すべてのジョブがする独自のトリガー持ち、スケジューリングロジックが含まれ、次のジョブを実行するかを決定します事故の独自の初期設定に加えて、トリガーは完全にステートレスです。それは単純にすべきであるタスクが何時に実行されなければならない説明します。 

        ジョブ記憶(ジョブストアする)スケジュールされたジョブを格納するジョブ格納デフォルト動作は単にメモリに格納され、他のメモリ動作は、ジョブデータベースに格納されています。ジョブデータは、操作のシーケンスとき永続ストレージに格納され、ロードされたときにデシリアライズします。スケジューラは、同じジョブストレージを共有することはできません。 

        アクチュエータ(エグゼ)ジョブの実行中のプロセスのスレッドに、彼らは通常の都市に、または仕事での開発で呼び出し可能提出すること。ときに、ジョブが完了すると、アクチュエータは、ディスパッチャを通知します。 

        スケジューラ(スケジューラ)タスクコントローラ:エグゼキュータ、jobstore、トリガー、スレッドプール(20のThreadPoolExecutorデフォルト値)またはプロセスプール(5 ProcessPoolExecutorデフォルト値)を用いて三(max_instances)にデフォルト最大ラン・タスク・インスタンスを構成することにより、達成ジョブスケジューリング制御CRUDなど

        お使いのアプリケーション環境とAPSchedulerの使用の目的に応じて、適切なスケジューラを選択する必要があります。通常、2つの最も一般的に使用: 

        BlockingScheduler:使用スケジューラが実行したいときに使用するものだけです。 

        BackgroundScheduler:あなたは、フレームワークの他の使用を実行して、アプリケーション内のスケジュールにしたくない背景を実行します


ジョブ保存

        4支持ジョブ記憶、即ち:MemoryJobStore(メモリに格納されている)、SQLAlchemyの(リレーショナルデータベース)、MongoDBの(文書データベース)、Redisの(タイプのメモリキーと値のペアのデータベース)

トリガー

        日付:日付を修正トリガー:タスクは、一度だけ実行するように自動的にクリア実行が完了し、彼らが実行するように指定した時間を逃した場合、タスクは作成されません

        インターバル:インターバルトリガーするたびに一定の時間間隔。

        cron:cronのスタイルのタスクトリガー。

 
 
 
 

ジョブアクション

        1.ジョブの追加:上記であるadd_job()ジョブを追加し、別の方法でであるためにscheduled_job()デコレータ修正機能。

        @ sched.scheduled_job( 'のcron'、ID = 'my_job_id'、日= '最後の日')

        デフsome_decorated_task():

                (「私は毎月の最終日曜日に夜12時00分00秒で印刷されています!」)を印刷

        仕事を削除2.

        仕事= scheduler.add_job(myfuncが、 '間隔'、分= 2)

        job.remove()

        同じ、明示的なジョブIDを使用して:

        scheduler.add_job(myfunc,'interval', minutes=2, id='my_job_id')

        scheduler.remove_job('my_job_id')

        3. 暂停和恢复作业

        暂停作业:

            –apscheduler.job.Job.pause()

            –apscheduler.schedulers.base.BaseScheduler.pause_job()

        恢复作业:

            –apscheduler.job.Job.resume()

            –apscheduler.schedulers.base.BaseScheduler.resume_job()

        4. 获得job列表

        获得调度作业的列表,可以使用get_jobs()来完成,它会返回所有的job实例。或者使用print_jobs()来输出所有格式化的作业列表。

        5. 修改作业

        def some_decorated_task():

            print("I am printed at 00:00:00 on the last Sunday of every month!")

        6. 关闭调度器

        默认情况下调度器会等待所有正在运行的作业完成后,关闭所有的调度器和作业存储。如果你不想等待,可以将wait选项设置为False

        scheduler.shutdown()

        scheduler.shutdown(wait=False)


作业运行的控制

        add_job的第二个参数是trigger,它管理着作业的调度方式。它可以为date, interval或者cron。对于不同的trigger,对应的参数也相同。




おすすめ

転載: www.cnblogs.com/xiaozengzeng/p/12159231.html