2017-04-07 59 views
0

我正在爲Raspberry Pi編寫一個應用程序。應用程序必須運行定期任務,並通過socket.io連接到主服務器以從服務器獲取命令。我首選APscheduler來運行定期任務,因爲它能夠動態地控制任務間隔。我使用socketIO_client從服務器獲取cron語句並將它們應用於正在運行的任務。直到這一點,它的作品像魅力。然而我需要更多的功能。APScheduler一起使用cron和即時觸發器

在定期任務運行之間,我想通過socket.io服務器事件運行任務。在這個網站上我發現this問題和應用答案類似的問題。通常情況下,APscheduler非常聰明,在前一個任務完成之前,通過設置coalesce True和/或max_instances 1,不會運行任務。但是使用job.func()方法,即使前一個任務尚未完成,作業也會啓動。

基本上我想要的是定期運行一個函數,也能夠在服務器事件的間隔之間運行。如果工作開始或者cron或者服務器事件,那麼直到它完成新的工作應該通過。有沒有辦法做到這一點?

回答

0

對不起,目前APScheduler本地不可能。您將不得不創建兩個作業並共享一個鎖對象或其中的某個對象,以確保它們不會同時運行。

+0

感謝您的回答 – CarnageTR