2016-09-21 103 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' –

相关问题