发布网友 发布时间:2024-09-02 15:01
共1个回答
热心网友 时间:2024-09-02 15:13
uWSGI是一个C应用,需要C编译器如gcc和python-dev进行部署,并将其设置为HTTP端口9090。
启动uWSGI,创建一个HTTP服务器/路由器,将请求传递给WSGI应用:
uwsgi --http :9090 --wsgi-file foobar.py
增加并发和监控功能,通过--processes选项或--threads选项增加进程或线程:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
设置主进程,当进程死掉时,重新spawn一个新进程,同时包括HTTP路由器。
使用stats子系统监控uWSGI内部数据,通过telnet到指定端口获取信息:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
发送请求并telnet到端口,获取大量有趣信息,使用"uwsgitop"工具监控应用实例。
RUNSERVER
官方文档说明Django自带的server默认是多线程。
通过测试,证明Django的server默认是多线程。
使用uWSGI服务器启动Django:
在Django项目目录下启动uWSGI:
uwsgi --http 0.0.0.0:8000 --file Demo/wsgi.py
测试结果显示,在这种情况下启动Django项目,uWSGI也是单线程,访问接口需要"排队"。
不给uWSGI加进程,默认是单进程单线程。
给uWSGI加进程数,设置进程数和线程数:
uwsgi --http 0.0.0.0:8000 --file Demo/wsgi.py --processes 4 --threads 2
测试结果显示,接口可以"同时"访问,uWSGI提供多线程。
总结关于Django的多线程问题,Python因为GIL的存在,在一个进程中,只允许一个线程工作,导致单进程多线程无法利用多核。
多进程的多处理器的Python应用可能存在并行,至于并发还是并行,有操作系统决定,如果分配单处理器处理多进程,那就是并行,如果分配给多处理器那就是并行。
Nginx+uWSGI可以实现Python高并发。
热心网友 时间:2024-09-02 15:19
uWSGI是一个C应用,需要C编译器如gcc和python-dev进行部署,并将其设置为HTTP端口9090。
启动uWSGI,创建一个HTTP服务器/路由器,将请求传递给WSGI应用:
uwsgi --http :9090 --wsgi-file foobar.py
增加并发和监控功能,通过--processes选项或--threads选项增加进程或线程:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
设置主进程,当进程死掉时,重新spawn一个新进程,同时包括HTTP路由器。
使用stats子系统监控uWSGI内部数据,通过telnet到指定端口获取信息:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
发送请求并telnet到端口,获取大量有趣信息,使用"uwsgitop"工具监控应用实例。
RUNSERVER
官方文档说明Django自带的server默认是多线程。
通过测试,证明Django的server默认是多线程。
使用uWSGI服务器启动Django:
在Django项目目录下启动uWSGI:
uwsgi --http 0.0.0.0:8000 --file Demo/wsgi.py
测试结果显示,在这种情况下启动Django项目,uWSGI也是单线程,访问接口需要"排队"。
不给uWSGI加进程,默认是单进程单线程。
给uWSGI加进程数,设置进程数和线程数:
uwsgi --http 0.0.0.0:8000 --file Demo/wsgi.py --processes 4 --threads 2
测试结果显示,接口可以"同时"访问,uWSGI提供多线程。
总结关于Django的多线程问题,Python因为GIL的存在,在一个进程中,只允许一个线程工作,导致单进程多线程无法利用多核。
多进程的多处理器的Python应用可能存在并行,至于并发还是并行,有操作系统决定,如果分配单处理器处理多进程,那就是并行,如果分配给多处理器那就是并行。
Nginx+uWSGI可以实现Python高并发。