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

pan*_*ore 19 python django nginx celery uwsgi

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

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

Sco*_*all 14

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

    来自uWsgi文档:

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

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

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

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

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

  • 这个设置中的线程安全性怎么样?

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