首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django设置是否在uwsgi工作人员之间共享?

Django设置是否在uwsgi工作人员之间共享?
EN

Stack Overflow用户
提问于 2018-11-20 07:23:30
回答 1查看 496关注 0票数 4

我有一个Django应用程序,它的设置(在我的settings.py文件中)是在我的app Config的ready()函数中动态填充的。在settings.py中,我有:

代码语言:javascript
运行
复制
POPULATE_THIS = None

然后在apps.py in ready中,我有:

代码语言:javascript
运行
复制
def ready(self):
    if POPULATE_THIS is None:
        POPULATE_THIS = ... some code which instantiates an object I need that's effectively a singleton ...

这似乎工作得很好。但我现在不是在本地运行开发服务器(即python manage.py runserver),而是通过uwsgi (nginx后面的代理)运行Django应用程序,并且uwsgi被配置为运行10个工作进程(即我的uwsgi ini文件具有processes = 10threads = 1)。

我看到的证据表明,即使有10个uwsgi进程,ready()在应用程序启动时仍然只调用一次,并且POPULATE_THIS的值在所有工作进程中都是相同的(对它执行字符串就是给出相同的内存地址)。

我的问题是:这个值是如何在uwsgi进程之间共享的,因为我认为单独的进程是不同的,并且不共享任何内存?我假设ready()在每个应用程序启动时都会被调用一次(即当uwsgi本身启动时),而不是每个uwsgi工作进程启动时调用一次,这样的假设正确吗?

这个不同问题的答案(Multiple server processes using nginx and uWSGI)似乎表明一些数据是在工人之间共享的,但我似乎找不到任何官方文档来说明共享的确切内容和方式,特别是关于Django设置,所以一些解释/细节将非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-11-20 07:34:32

一点儿没错。

看起来uwsgi只对django应用程序本身的进程进行了垃圾邮件处理,因此所有函数ready在第一次运行时只会被调用一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53384081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档