2016-09-21 104 views
1

我在我的生產系統中使用Debian 8上的uwsgi-emperor。對於特定的Django項目,我需要在啓動封套時只執行一次計算密集型設置任務。該封臣可以擁有多個工作者/線程,但是該任務只能執行一次,無論產生了多少工作者/線程。在啓動uwsgi-emperor app時執行一次任務

目前,每次新員工啓動時,我都會執行此設置任務,但這顯然不是最理想的。設置任務是從同一個Django項目調用方法,但我認爲這不會改變問題。

有沒有辦法從uWSGI做到這一點?

+0

你試過張貼在這裏的建議:HTTP://計算器。 COM /問題/ 6791911 /執行代碼,當-Django的開始,僅一次(http://stackoverflow.com/questions/6791911/execute-code-when-django-starts-once-only)? –

+0

@ rafa-he-so是的,基本上,這就是我使用的方法。在具有多個worker的生產服務器上工作時,初始化代碼會運行幾次,這就是我想避免 –

回答

0

你可以嘗試使用singletone方法,該代碼在settings.py將調用startup_only_once()函數只有一次:

from tendo.singleton import SingleInstance 


def startup_only_once(): 
    print("One time only") 


try: 
    FIRST_START = SingleInstance() 
    startup_only_once() 
except: 
    pass 
+0

需求tendo'pip install tendo' –

相關問題