Python apscheduler(バージョン3.0.1)を使用して毎秒関数を実行しています
コード:
scheduler = BackgroundScheduler()
scheduler.add_job(runsync, 'interval', seconds=1)
scheduler.start()
ほとんどの場合問題なく動作していますが、次の警告が表示されることがあります。
WARNING:apscheduler.scheduler:Execution of job "runsync (trigger: interval[0:00:01], next run at: 2015-12-01 11:50:42 UTC)" skipped: maximum number of running instances reached (1)
1.これはこのメソッドを実行する正しい方法ですか?
2.この警告はどういう意味ですか?とにかく関数内のタスクの実行に影響しますか?
3.これをどのように処理しますか?
これは、タスクに1秒以上かかることを意味し、デフォルトでは、特定のジョブに対して許可される同時実行は1つだけです。タスクが何であるかを知らずにこれを処理する方法をあなたに伝えることはできません。
同じジョブのインスタンスを同時に実行して警告を回避したい場合は、スケジューラのadd_job()
メソッドに_max_instances
_引数を含めることができます。デフォルト値は1です。
max_instances
を増やす特定のユースケースで許可されている場合は、以下に示すようにmax_instances
を増やすだけです。
import apscheduler.schedulers.blocking
scheduler = apscheduler.schedulers.blocking.BackgroundScheduler('apscheduler.job_defaults.max_instances': '2')
3つのapscheduler
構成スタイルがあります。これらは ドキュメント で説明されています。