uwsgi:啥定义了 django 应用程序需要的工人/进程的数量?

Posted

技术标签:

【中文标题】uwsgi:啥定义了 django 应用程序需要的工人/进程的数量?【英文标题】:uwsgi: What defines the number of workers/process that a django app needs?uwsgi:什么定义了 django 应用程序需要的工人/进程的数量? 【发布时间】:2012-10-02 06:29:23 【问题描述】:

我有一个系统管理员和开发人员的问题。 我看到 uWSGI 允许我在运行 uWSGI 时设置数量或工作程序或进程,并且我读过它取决于安装的机器,所以我有下一个问题:

    定义机器工人数量的规则是什么? 与nginx一起使用时,nginx.conf中的配置worker_processes会影响这个吗? 与 Celery 和 Redis 一起使用时,concurrency 是否与此相关? 此设置中的线程安全性如何? (我在我的应用中看到过 1 个请求执行 1 个任务的情况,结果是 2 次调用 celery 执行此任务。)

【问题讨论】:

您的最后一点与 uwsgi 设置无关。 (您可能想为此 [使用您的 celery 配置] 提出一个新问题) 你确定吗?你能回答为什么吗? 【参考方案1】:

定义机器工人数量的规则是什么?

来自uWsgi docs:

设置进程数或线程数没有神奇的规则。它取决于应用程序和系统。不要认为使用像 2*cpucores 这样的简单数学就足够了。您需要尝试各种设置并不断监控您的应用程序。 uwsgitop 可能是找到最佳价值的绝佳工具。

与 nginx 一起使用时,nginx.conf 中的配置“worker_processes”会影响这个吗?

那个设置只和nginx有关,不直接影响uwsgi。但是,您可能需要修改此设置,因为您不希望有 20 个 nginx worker_processes 和只有一个 uwsgi 工作者。

当与 celery+redis 一起使用时,“并发”与此有关吗?

我通常使用 django 的 manage.py 启动 Celery 守护进程,因此它将在 uwsgi 之外运行。

此设置中的线程安全性如何?

我必须知道更多细节/细节才能发表评论。

【讨论】:

线程安全:我的意思是,在配置有 nginx 1 worker_process+uwsgi 2 workers+celery 4 进程的环境中的线程安全。我在我的应用程序中看到过 1 个请求执行 1 个任务,结果是 2 次调用 celery 执行此任务。

以上是关于uwsgi:啥定义了 django 应用程序需要的工人/进程的数量?的主要内容,如果未能解决你的问题,请参考以下文章

uWSGI + Django + Nginx - 运行时错误

python django+uwsgi+nginx

Django 跟 web server 有没有啥关系

uwsgi 快速入门

uwsgi nginx与django之间的关系以及各自的作用

Django + uwsgi + nginx +让加密无法访问https