APScheduler (v3.0.0) でインターバル ジョブをスケジュールしようとしています。
私はもう試した:
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
def my_interval_job():
print 'Hello World!'
sched.add_job(my_interval_job, 'interval', seconds=5)
sched.start()
と
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', id='my_job_id', seconds=5)
def my_interval_job():
print 'Hello World!'
sched.start()
どちらもdocsに従って動作するはずですが、ジョブは起動しません...
更新:
環境に関連して、タスクの実行を妨げている何かがあったことが判明しました。今朝、昨日のコードを変更することなく、タスクは正常に機能しています。
更新 2:
さらにテストした結果、「間隔」ジョブは一般的に不安定なように見えることがわかりました...上記のコードは開発環境で機能するようになりましたが、ステージング環境にデプロイするときは機能しません (私は heroku を使用しています)ステージング用のアプリ)。ステージング/本番環境で問題なく動作する他の apscheduler 'cron' ジョブがあります。
「apscheduler.schedulers」ロガーの DEBUG ロギングをオンにすると、ログにインターバル ジョブが追加されたことが示されます。
ジョブ "my_cron_job1" をジョブ ストア "default" に 追加
ジョブ "my_cron_job2" をジョブ ストア "default" に
追加 ジョブ "my_interval_job" をジョブ ストア "default" に 追加ジョブは暫定的に -- スケジューラーの開始時に適切にスケジュールされ ます 実行するジョブを探します 次のウェイクアップは 2015-03-24 15:05:00-07:00 の予定です ( 254.210542 秒)
インターバル ジョブが 5 秒に設定されている場合、次のウェイクアップの期限が今から 254 秒になるのはどうしてですか??