0

スクリプトを使用してapschedulerを使用してスケジューラにジョブを追加しています。残念ながら、スケジューラを起動していないため、スクリプトを使用するとジョブが適切にスケジュールされません。

scheduler = self.getscheduler() # initializes and returns scheduler
scheduler.add_job(trigger=trigger, func = function, jobstore = 'mongo') #sample code. Note that I did not call scheduler.start()

次のメッセージが表示されます。apscheduler.scheduler - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts

スクリプトはスケジューラにジョブを追加することになっています (その特定のインスタンスでスケジューラを実行するのではありません)。データベースに追加されたジョブのイベントに追加される他の情報があります。スケジューラーを実際に実行せずに、ジョブを追加してスケジューラーに強制的にジョブストアに追加させることはできますか?

各ジョブの追加後にスケジューラを起動およびシャットダウンして、スケジューラにジョブ情報をジョブストアに保存させることができることを私は知っています。それは本当に良いアプローチですか?

編集:私の当初の意図は、ソフトウェアの初期化プロセスを分離することでした。まだ開始されていないスケジューラにいくつかのジョブを追加したかっただけです。本当の問題は、ユーザーがスケジューラを開始および停止する許可を与えたことです。システムに実行中のスケジューラのインスタンスがあるかどうかは保証できません。ジョブの追加後にスケジューラを起動してシャットダウンすることで、問題を一時的に修正しました。できます。

4

1 に答える 1

0

ジョブが追加されたことをスケジューラーに通知して、スケジューラーがウェイクアップし、次のウェイクアップまでの遅延を調整できるようにする何らかの方法が必要です。これは、ある種の RPC メカニズムを介して行う方がよいでしょう。特定のユースケースに適したメカニズムの種類はわかりません。しかし、RPyC と Execnet は良い候補です。それらのいずれかまたは他のものを使用して、スケジューラープロセスをリモートで制御し、上記のジョブを追加すると、問題ありません。

于 2015-03-06T11:28:02.157 に答える