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

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高并发。

Django两种启动方式(runserver和uwsgi)的区别
官方文档说明Django自带的server默认是多线程。通过测试,证明Django的server默认是多线程。使用uWSGI服务器启动Django:在Django项目目录下启动uWSGI:uwsgi --http 0.0.0.0:8000 --file Demo\/wsgi.py 测试结果显示,在这种情况下启动Django项目,uWSGI也是单线程,访问接口需要"排队"。不给uWSGI加进程,...

django怎么启动服务(django启动服务的命令)
用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。这里分为两种情况,如果是reload重载时,会直接执行inner_run(),而项目启动需要先执行其他逻辑。django项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。第...

django怎么启动与关闭(2023年最新整理)
用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。这里分为两种情况,如果是reload重载时,会直接执行inner_run(),而项目启动需要先执行其他逻辑。django项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。第...

如何在cmd里启动Django程序(django怎么启动)
可使用screen命令创建虚拟窗口(需先yum安装)。另外,这种runserver的启动方式仅用于本地测试,就开着个终端也没什么,正式部署会用容器启动,不会有这样的烦恼。windows下怎么安装django首先我们要下载python和Django,他们的下载地址如下 此处讲解Django的安装配置。下载过后,解压。安装Django时我们要用到CMD。

django的runserver是什么(djangoruntimeerror)
用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。 这里分为两种情况,如果是reload重载时,会直接执行inner_run(),而项目启动需要先执行其他逻辑。 django项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。 第一次启动时,...

Django怎么用https启动
eclipse的话应该是runconfigurations要添加参数runserver 没用过eclipse跑python试试 不过manage.py应该在你工程的上一个目录里 windows安装django之后怎么启动首先进去软件,然后file--settings--ProjectInterpreter在这右边会有你安装的包。第一次应该是什么都没有的然后--点击最下面的,安装pipsetuptools。安装...

如何运行导入的django项目?
用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。这里分为两种情况,如果是reload重载时,会直接执行inner_run(),而项目启动需要先执行其他逻辑。django项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。第...

怎么重启django服务器(2023年最新整理)
通常用WSGI方式启动,ngix连接django方式。很少出现这样的情形。如果内存耗尽,先要确定原因。如果你的虚拟机内存太少,就加内存。如果内存超过1个GB,还有内存耗尽的问题,应该django里的view没有设计好。其中有内存泄露。第一件事情当然是把这部分代码找出来改进就可以了。最后一种办法,在不得已的情况下,定时重新启动dj...

django如何开启新线程(2023年最新解答)
用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。这里分为两种情况,如果是reload重载时,会直接执行inner_run(),而项目启动需要先执行其他逻辑。django项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。第...

pycharm怎么打开django项目(pycharm启动django项目)
如何利用pycharm调试Django我在用PyCharm开发django程序的时候,对于打印日志调试程序的方式感觉还是有点麻烦和不直观,所以研究了一下断点调试的方法如下:1、打开你的工程,在菜单栏里找到Run--EditConfigurations 2、在打开的对话框里边选择Python,点击+号 4、选择Python 5、出现了一个新的项Unnamed,你...


其它相关链接

资料来自于网友,若有质量问题,请联系电邮
© 狮子故事网