2011-07-19 17 views
0

Python 2.6でschedモジュールを使用して、60秒ごとに関数を実行しています。各呼び出しは、遅延60、優先度1で実行した後にsched.enter()関数を発行します。これはうまくいきました。遅延されたPythonのスケジュール実行の原因

しかし、sched関数の次回の実行が数分、さらには5〜6分後であっても起こらない場合があります。これは仮想マシン上で観察されています。

この原因は何ですか?タスクが定期的に実行されるようにするための回避策はありますか?

+0

仮想化されたボックスで時間が継続していることを確認してください。仮想マシンでは、時間がゆっくりと実行されていた仮想マシンでいくつかの問題が発生しました(仮想ボックスでの1分の時間はリアルタイムで数分でした)。 –

答えて

0

sched.enterが呼び出されるまでにどのくらいの時間がかかるのですか?私はこれを監視し、sched.enterdelayパラメータでその処理時間を考慮に入れることをお勧めします。

VMとVMホストの負荷も重要な要素になります。私は、VMホストが高すぎる負荷とスワッピングを受けているために、一部のアプリケーションでパフォーマンスの低下が見られました。

+0

処理には通常2〜3秒かかります。したがって、トリガされるタスクではないため、sched.enter()が呼び出された後に遅延が発生します。 – DavidM

+0

あなたは時間を費やす場所を見るためにprintステートメントでsched.pyを装備しようとしましたか? –

+0

これはプロダクションサーバー上に表示されているため、実際にそれを行うことはできないと思っています。それはschedの他の使用方法を妨げる可能性があります。 – DavidM

関連する問題