簡體   English   中英

如何確保Celery任務是防止Celery任務執行重疊

[英]How to ensure a Celery task is Preventing overlapping Celery task executions

如何阻止Celery在上一次執行完成之前執行定期任務?

我有一個服務器集群,鏈接到一個公共數據庫服務器,執行Celery任務,我發現每個服務器可能偶爾同時運行相同的任務以及同時運行同一任務的不同服務器。 這導致了許多競爭條件,這些條件以痛苦的微妙方式破壞了我的數據。

我一直在閱讀Celery的文檔 ,但我找不到任何明確允許這個的選項。 我發現了一個類似的問題 ,但建議的修復似乎是一個黑客,因為它依賴於Django的緩存框架,因此可能不會被集群中的所有服務器共享,允許多個服務器仍然同時執行相同的任務。

Celery中是否有任何選項可以記錄數據庫中當前正在運行的任務,並且在清除數據庫記錄之前不再運行?

我正在使用Django-Celery模塊,即使它提供了pages / admin / djcelery / taskstate /和/ admin / djcelery / workerstate /,我也從未見過任何長期運行的任務或工作人員出現在那里。

標准方法是通過django標准緩存機制使用共享鎖。 從官方文檔中查看此配方

如果我是你,我會為任何無法同時執行的作業設置一個特殊隊列。 然后,您只需為該隊列啟動一個單獨的工作程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM