gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:51:42 27 4
gpt4 key购买 nike

我有一个 Django 应用程序,其设置(在我的 settings.py 文件中)动态填充在我的应用程序配置的 ready() 中。功能。即在 settings.py我有:

POPULATE_THIS = None

然后在apps.py准备好我有:
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所有工作人员都相同(对其执行 str 会给出相同的内存地址)。

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

这个关于不同问题的答案( Multiple server processes using nginx and uWSGI )似乎表明一些数据是跨工作人员共享的,但我似乎找不到任何官方文档来说明究竟共享了什么以及如何共享,特别是关于 Django 设置,所以一些解释/细节将不胜感激。

最佳答案

确切地。

似乎uwsgi 只处理django 应用程序本身的垃圾邮件进程,因此所有功能ready在第一次运行期间只会被调用一次。

关于django - Django 设置是否在 uwsgi 工作人员之间共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53384081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com