web-dev-qa-db-ja.com

python apscheduler-スキップ:実行中のインスタンスの最大数に達しました

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.これをどのように処理しますか?

14
ashishashen

これは、タスクに1秒以上かかることを意味し、デフォルトでは、特定のジョブに対して許可される同時実行は1つだけです。タスクが何であるかを知らずにこれを処理する方法をあなたに伝えることはできません。

11
Alex Grönholm

同じジョブのインスタンスを同時に実行して警告を回避したい場合は、スケジューラのadd_job()メソッドに_max_instances_引数を含めることができます。デフォルト値は1です。

5
Jorge Luis

max_instancesを増やす

特定のユースケースで許可されている場合は、以下に示すようにmax_instancesを増やすだけです。

import apscheduler.schedulers.blocking

scheduler = apscheduler.schedulers.blocking.BackgroundScheduler('apscheduler.job_defaults.max_instances': '2')

3つのapscheduler構成スタイルがあります。これらは ドキュメント で説明されています。

2

私のタスクが間隔よりも長くかかっていないことはかなり確実です。代わりにこれ answer をたどり、提案されたようにapscheduler==2.1.2に切り替えました ここ

0
Semih Sezer