什么是uwsgi线程用于?

Anu*_*wal 8 python wsgi uwsgi

我在uwsgi.ini文件中看到有一个配置

[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191
Run Code Online (Sandbox Code Playgroud)

我知道每个请求都在不同的过程中提供.然后用于什么线程?

Eug*_*ash 8

进程和线程都可用于增加并发性.线程比进程便宜并且使用更少的资源,但由于Python GIL,可能并不总是并行运行.

另外,引用uWSGI 文档:

设置要使用的进程或线程数没有神奇的规则.它非常依赖于应用程序和系统.简单的数学就像processes = 2 * cpucores是不够的.您需要尝试各种设置,并准备好持续监控您的应用.uwsgitop可能是找到最佳价值的好工具.

  • 4个进程4个线程可以同时处理和扩展16个请求.如果应用程序瓶颈正在等待数据库IO,则线程不会对Python造成损失.此外,每个进程都需要一定量的内存来启动新的Python虚拟机.线程不会这样做. (8认同)
  • > 请注意,潜在的阻塞或长时间运行的操作,例如 I/O、图像处理和 NumPy 数字运算,发生在 GIL 之外。那么如果应用程序是 IO 绑定的,那么使用线程而不是进程会更好吗? (3认同)