楚雄州住房和城乡建设局网站,网站建设费要摊销,网站建设一定要买数据盘吗,哪些网站可以找到做海报的素材首先了解一下开发环境服务器跟生产环境服务器有何不同。 一、我们通过 python manage.py runserver 启动开发环境服务器#xff0c;这条命令背后做了哪些事情#xff1f;
1、首先加载Django项目的设置#xff08;settings#xff09;
2、检查数据库迁移#xff0c;确保数…首先了解一下开发环境服务器跟生产环境服务器有何不同。 一、我们通过 python manage.py runserver 启动开发环境服务器这条命令背后做了哪些事情
1、首先加载Django项目的设置settings
2、检查数据库迁移确保数据库是最新的或者提醒开发者关于未应用的迁移。
3、启动开发服务器接下来Django会启动一个轻量级的Web服务器。这个服务器默认监听127.0.0.1:8000地址和端口但你可以通过命令行参数更改这些设置。
4、监听文件修改并自动重新加载代码文件修改后Django会自动重启服务器这样你就可以立即看到你的更改效果。
5、静态文件和媒体文件的服务在开发模式下runserver也会自动服务静态文件CSS、JavaScript、图片等和媒体文件让你不需要配置额外的Web服务器就能测试这些文件的加载和显示。
6、请求处理对于进来的HTTP请求runserver通过Django的WSGI应用来处理。它会根据配置的URL路由将请求分发到相应的视图函数或类视图上然后返回响应给客户端。
7、输出日志信息runserver会在控制台输出访问日志和错误信息这对开发者调试应用非常有用。 我们重点关注3和6启动开发服务器 和 请求处理django内置了一个轻量服务器模块django.core.servers.basehttp。当你运行python manage.py runserver命令时Django会通过django.core.management.commands.runserver模块创建一个django.core.servers.basehttp.WSGIServer实例这个实例是 Django 的轻量级 Web 服务器的核心。它接收 HTTP 请求并将其转发给 Django 的 WSGI 应用处理然后再将响应返回给客户端。 二、我们看看生产环境以Nginx Gunicorn Django为例。
这个配置下整个http请求处理过程中不会启动django.core.servers.basehttp.WSGIServer
而是会启动Gunicorn服务器以下是启动Gunicorn服务器的指令。
gunicorn myproject.wsgi
默认情况下Gunicorn会监听127.0.0.1:8000地址
然后就是 客户端 ---Nginx---Gunicorn---WSGI---你写的脚本
参考这个图 三、对于IISwfastcgidjango
IIS的作用相当于Nginx
wfastcgi的作用也类似于Gunicorn都是将HTTP请求转换为WSGI兼容请求并传递给Django应用但wfastcgi的功能比Gunicorn少。例如
Gunicorn 可以监听HTTP请求以及将WSGI应用的响应发送回客户端而wfastcgi没有自己监听HTTP请求的能力也不能将response发送给客户端它是依赖于IIS来接收接收和发送响应的。--因此Gunicorn可以独立作为服务器无需Nginx但wfastcgi脱离了IIS就无法处理请求和响应。 四、对于 IIShttpPlatformHandler django 使用HttpPlatformHandler时是需要搭配Gunicorn或uWSGI才能完成整个http的请求响应的。
如果没有搭配Gunicorn或uWSGI而使用以下这个配置的话实际上是启动了Django内置的开发服务器(django.core.servers.basehttp.WSGIServer)所以这个配置并不适用于生产环境。
?xml version1.0 encodingUTF-8?
configuration system.webServerhandlersadd namehttpPlatformHandler path* verb*moduleshttpPlatformHandler resourceTypeUnspecified//handlershttpPlatform processPathD:\home\Python27\python.exe argumentsmanage.py runserver %HTTP_PLATFORM_PORT% requestTimeout00:04:00 startupTimeLimit120 startupRetryCount3 stdoutLogEnabledtrueenvironmentVariablesenvironmentVariable namePYTHONPATH valueD:\home\site\wwwroot//environmentVariables/httpPlatform/system.webServer
/configuration
若把
argumentsmanage.py runserver %HTTP_PLATFORM_PORT%
改为gunicorn就可以用于生产环境了
argumentsgunicorn myproject.wsgi:application --bind 0.0.0.0:%HTTP_PLATFORM_PORT%或为waitress 也可以用于生产环境
argumentsrun_waitress_server.py -----------------------------------------------------
# 前提是确保先安装了waitress
pip install waitress# run_waitress_server.py 的代码如下import os
from waitress import serve
from index import appserve(app,host0.0.0.0,portos.environ[PORT])
waitress 是跟 Gunicorn 同性质的纯python web server相比之下waitress 配置更简单但性能弱一些适合小型项目。网上有不少waitress vs Gunicorn 的比较文章。 启动uwsgi的命令是
#启动 uwsgi 命令
# cd ./mysite/mysite # uwsgi.ini 配置文件 下执行
uwsgi --ini uwsgi.ini