Django两种启动方式(runserver和uwsgi)的区别

发布网友 发布时间: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高并发。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com