2011-07-19 68 views
0

我們使用Python 2.6中的sched模塊來每60秒運行一個函數。每個調用在執行延遲60和優先級爲1後發出sched.enter()函數。這一直工作正常。延遲Python調度執行的原因

但是,我們發現了一個情況,即調度函數的下一次執行不會在幾分鐘內發生,甚至在5-6分鐘後也不會發生。這在虛擬機上已被觀察到。

這可能是什麼原因造成的?是否有任何解決方法來確保任務得到定期執行?

+0

您確定時間在您的虛擬化盒子裏連續運行嗎?我在虛擬機上遇到了一些問題,其中時間的運行速度比它應該慢的多(虛擬盒中的1分鐘時間實時爲幾分鐘)。 –

回答

0

調用sched.enter之前發生的處理需要多長時間?我建議對此進行監測,並可能在delay參數sched.enter中考慮到處理時間。

VM和VM主機的負載也可能是重要因素。我發現某些應用程序的性能降低是由於VM主機負載過重和交換負載過重造成的。

+0

處理通常需要幾秒鐘的時間,所以不是被觸發的任務,延遲肯定是在sched.enter()被調用之後。 – DavidM

+0

您是否嘗試過使用print語句來檢查sched.py以查看在哪裏花費時間? –

+0

我不認爲我真的可以這樣做,因爲這是在生產服務器上看到的,它可能會干擾其他sched的使用。 – DavidM