CrontabとAPScheduler


APScheduler
ASchedulerはPythonタイミングタスクフレームワークで、使いやすいです.日付、固定間隔、crontabタイプに基づくタスクが提供され、タスクを永続化し、daemon方式でアプリケーションを実行できます.
DjangoでAPSchedulerを使う
インストールパッケージ:
pip install apscheduler
pip install django-apscheduler
登録の使用
  • プロファイル内のINSTALL_APPSにおける登録タイミングタスク
  • 対jobの操作
  • add_job():jobを変更または削除するために使用できるapscheduler.job.Jobのインスタンスが返されます.
  • scheduler_job():アプリケーションの実行中に変更されないjob
  • にのみ適用されます.
  • job除去
  • remove_job():jobIDを使用して
  • を削除
  • job.remove():add_を使用job()は、インスタンス
  • を返す

    いどうmigrateは、必要なタイミングタスクを管理するために使用されるdjango-apscheduler_djangojobdjango_apscheduler_djangojobexecutionの2つのテーブルを生成します.
    具体的な実装
  • 1、異常が発生する可能性があるので、まず異常捕獲
  • を使用する必要がある.
  • 2、スケジューラのインスタンス化オブジェクトscheduler=BackgroundScheduler()
  • を作成する.
  • 3、使用するスケジューラscheduler.add_jobstore(DjangoJobStore),"default")
  • を宣言する
  • 4、デコライザを使用する形式で、タイミングで実行するタスクの登録と循環方式、スケジューラ、実現制限など
    @register_job(scheduler, 'cron', day_of_week='mon-fri', hour='9', minute='30', second='10',id='task_time')·
            def test_job():
               t_now = time.localtime()
               print(t_now)
    
  • を設定する.
  • 5、タスクを監視し、django_apscheduler.jobstoresから提供されたregister_を使用するeventsモニタリングタスク:register_events(scheduler)
  • 6、オープンスケジューラ:scheduler.start()
  • 7、エラーが発生した場合、スケジューラは直ちに実行を停止する:scheduler.shutdown()
  • Crontab
    djangoの使用
  • 前提django_crontabはLinuxのcrontabが開いている場合に使用する必要があります.そうしないと、実行しない場合があります.
  • インストール
  • pip install django-crontab

  • 登録app
  • INSTALLED_APPS = ('django_crontab',...)

  • settings.pyの構成
  • CRONJOBS = [('*/5 * * * *', ' . ','>>/home/book.log')]
  • パラメータの説明:「*/5***」は5分に1回を表すが、django-crontabはLinuxを呼び出すcrontabである.
  • 最初のパラメータ:実行時間またはサイクルを表す
  • 時間の順序は -> -> -> ->
  • である.
  • 第2パラメータ:タイミング実行が必要な関数(パス+関数名)
  • を表す.
  • 第3パラメータ:log情報を出力するパス+logファイル

  • 使用開始
  • 起動
  • python manage.py crontab add
  • 現在のタイミングタスク
  • を表示する.
  • python manage.py crontab show
  • すべてのタイミングタスク
  • を削除
  • python manage.py crontab remove
  • 編集タイミングタスク
  • crontab -e
  • タイミングタスク
  • の表示
  • crontab -l

  • 一般的なパラメータ
  • "*"
  • "/" ' ', /5,