Pythonはタイミングタスクを達成APScheduler使用しています

APSchedulerタイミングタスクは、クォーツのPythonのフレームワークに基づいています。タスクの日付に基づいて、一定時間間隔のcrontabの種類を提供し、タスクが永続することができます。
オンラインドキュメントします。https://apscheduler.readthedocs.io/en/latest/userguide.html

まず、APSchedulerをインストール

apschedulerをインストールするPIP

第二に、基本的な概念

APSchedulerは、4つのコンポーネントがあります:
1、トリガーはトリガー:
トリガーは、スケジューリングロジックを備えます。各ジョブには、次のタスクを実行するかを決定するための独自のトリガーを持っています。初期構成に加えて、トリガーが完全にステートレスです。
内蔵トリガ3つがあります。
DATE(1):特定の時点トリガするために
(2)間隔:固定間隔トリガ
(3)クーロン:特定の時間に定期的にトリガ
2、タスクストアジョブストア:タスクを格納するために、タスクがメモリ(デフォルトMemoryJobStore)またはデータベースに格納されています。
図3に示すように、アクチュエータエグゼキュータ:アクチュエータは、タスクが完了したスレッドプールタスクまたはプールで実行中のプロセス、に提出され、アクチュエータの通知は、対応するイベント・スケジューラをトリガします。
4、スケジューラスケジューラ:上記の3つの成分などのパラメータは、スケジューラはインスタンスを作成することによって動作する
:開発のニーズに応じて適切なコンポーネントを選択するために、次のコンポーネントは、異なるスケジューラである
BlockingSchedulerブロッキングスケジューラ:スケジューラを実行するのみ適用しますプログラム。
BackgroundSchedulerバックグラウンドスケジューラ:非ブロックの場合には、スケジューラは、バックグラウンドで独立して実行されます。
AsnycIOを用いた場合のアプリケーションのためのAsyncIOScheduler AsyncIOスケジューラ。
GEvent状況で使用するためGeventScheduler Geventスケジューラ。
トルネードのためTornadoSchedulerトルネードスケジューラは、アプリケーションを構築します。
アプリケーションを構築するためのツイストTwistedSchedulerツイストスケジューラ。
スケジューラQtSchedulerのQt、Qtは建物の用途に使用します。

第三には、手順使用して
1、新しいスケジューラスケジューラ
2を、スケジュールされたタスクを加えた
3、スケジュールされたタスクの実行

第四に、ユースケース

1、トリガー日

トリガーは1回だけ実行され、特定の時点。パラメータは次のとおりです。

パラメータ 説明
run_date(日時或文字列) 実行日付や時刻の仕事
タイムゾーン(datetime.tzinfo或列str) タイムゾーンを指定

例を使用します。

日時インポート日時
 から日時の輸入から apscheduler.schedulers.blocking インポートBlockingScheduler 

デフジョブ(テキスト)    
     の印刷を(テキスト)

スケジューラ = BlockingScheduler()
在2019年8月30日运行ジョブ方法の一次 
scheduler.add_job(ジョブ、日付'run_date =日付(2019、8、30)、引数= [ ' テキスト1 ' ])
2019年8月30日午前1時00分00秒运行一次ジョブ方法の在 
scheduler.add_job(ジョブ、' '、Run_date =日時(2019 ,. 8、30 ,. 1、0、0)、引数= [ ' テキスト2 ' ])
ジョブの実行2019年8月30日1時00分01秒方法で 
scheduler.add_job(ジョブ、' DATE 'run_date = ' 2019年8月30日午前1時00分00秒'引数= [ ' テキスト3 ' ])

scheduler.start()

図2に示すように、トリガ間隔

一定の時間間隔トリガ。パラメータは次のとおりです。

パラメータ 説明
週(INT) 週間隔
日(INT) 数日間隔
時間(INT) インターバル時間
分(INT) 分からの範囲の間隔
秒(INT) どのように多くの秒間隔
START_DATE(日時或文字列) 開始日
END_DATE(日時或文字列) 終了日
タイムゾーン(datetime.tzinfo或列str)  

例を使用します。

インポート時間
 から apscheduler.schedulers.blocking インポートBlockingScheduler 

DEF ジョブ(テキスト):     
    Tは time.strftimeを=(' %Y-M-%のD %% H:%のM:%のS ' 、time.localtime(time.time()を))
     プリント' {} --- {} ' .format(テキスト、T))

スケジューラ = BlockingScheduler()
毎1分ジョブメソッド実行 
scheduler.add_job(ジョブ、' 区間'、= 1分、引数= [ JOB1というジョブ])
2019年8月29日に2019年8月29日午前22時15分○○秒午後09時17分00秒の間に、1分ごとに30秒がジョブメソッドを実行します
scheduler.add_job(仕事、' 間隔'、=。1分、30秒=、START_DATE = ' 2019年8月29日午前22時15分00秒'、END_DATE = ' 2019年8月29日午後10時17分○○秒'、引数= [ ' JOB2 ' ])

scheduler.start()

' '' 実行結果
JOB2 --- 2019年8月29日22時15分00秒
のジョブをそのJOB1 --- 2019年8月29日午後10時15分46秒
--- JOB2 2019午後十時16分30秒-08-29 
仕事そのJOB1 --- 2019年8月29日午後09時16分46秒
JOB1 2019年8月29日午前22時17分46秒は---という仕事
... ...残りの部分が省略されています
「」 '

 3、cronがトリガー

定期的に特定の時間に起動。パラメータは次のとおりです。

パラメータ 説明
年(intまたはSTR) 年4桁
月(intまたはSTR) ヶ月(範囲1-12)
日(intまたはSTR) 日(範囲1-31)
週(intまたはSTR) 週間(範囲1-53)
DAY_OF_WEEK(int型の或文字列) 最初の数日または数週間の週(範囲0-6か月、火曜、結婚、木、金、土、日)
時間(intまたはSTR) 場合(範囲0-23)
分(intまたはSTR) (範囲0-59)
第二(intまたはSTR) 秒(範囲0-59)
START_DATE(日時或文字列) 最早開始日(付属)
END_DATE(日時或文字列) 最新の終了時間(付属)
タイムゾーン(datetime.tzinfo或列str) タイムゾーンを指定

これらのパラメータは算術式をサポートし、以下のように、フォーマットの値は、次のとおり

  例を使用します。

インポート時間
 から apscheduler.schedulers.blocking インポートBlockingScheduler 

DEF ジョブ(テキスト):     
    T = time.strftime(' %Y-%M-%D%H:%のM:%のS ' 、time.localtime(time.time() ))
     プリント' {} --- {} ' .format(テキスト、T))

スケジューラ = BlockingScheduler()
在每天22点、每隔1分钟运行一次ジョブ方法の 
scheduler.add_job(ジョブ、' クーロン'、時間= 22分= ' * / 1 '、引数の= [ ' JOB1 ' ])
一日あたり22〜25分、23点で、ジョブ実行方法一度 
scheduler.add_job(ジョブ、' クーロン'、時間= ' 22-23 '、分= ' 25 '、引数の= [ ' JOB2 ' ])

scheduler.start( )

「'」
業績を:
ジョブをそのJOB1 --- 2019年8月29日午後09時25分00秒
JOB2 --- 2019年8月29日午後09時25分00秒
の仕事そのJOB1 --- 2019年8月29日夜10時26分00秒
の仕事というJOB1 2019年8月29日午後10時27分00秒--- 
... ...残りの部分は省略されています
'「」

 4、デコレータscheduled_jobにより添加する方法()

 タスクを追加する方法は2つあります。

(1))(add_jobを呼び出す---コード1-3上記参照によって
デコレータscheduled_job((2)):
第一の方法は、最も一般的に使用される方法です。第二の方法は変更されません実行しているアプリケーションで宣言されたタスクを容易にすることです。add_job()メソッドを使用して、後でタスクを変更または削除するには、この例を使用することができ、apscheduler.job.Jobインスタンスを返します。

インポート時間
 から apscheduler.schedulers.blocking インポートBlockingSchedulerの

スケジューラ = BlockingScheduler()

scheduler.scheduled_job(@ ' 区間'、秒= 5 デフJOB1():     
    T = time.strftime(' %Y-%M-%D%Hた:%M:%S 'time.localtime(time.time()))
     プリント' JOB1 --- {} ' .format(T))
scheduler.scheduled_job(@ ' のcron '第二= ' * / 7 " DEF 
    トン
 JOB2():     time.strftime(= ' :%M%S%Y-M-%D %% H ' 、time.localtime(time.time()))
     プリント' JOB2 --- {} ' .format(Tを))

scheduler.start()

' '' 
実行結果:
--- 2019年8月29日午後09時36分35秒JOB2を
ジョブというJOB1を--- 2019年8月29日午後09時36分37秒
JOB2 --- 2019年8月29日午前22時36分42秒
ジョブJOB1 --- 2019年8月29日午後09時36分42秒という
JOB1 --- 2019年8月29日午後10時36分47秒は、そのジョブ
JOB2 --- 2019年8月29日午後09時36分49秒
...残りは省略されます... 
「」 '

 

おすすめ

転載: www.cnblogs.com/gdjlc/p/11432526.html