uwsgi:什么定义了django应用程序需要的工作者/进程数量?

时间:2012-10-11 14:38:40

标签: python django nginx celery uwsgi

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

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

1 个答案:

答案 0 :(得分:14)

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

    来自uWsgi docs

      

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

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

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

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

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

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

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