简介:今天,首席CTO Note将与您分享与Django相关的Web服务器。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
本文目录清单:
1.什么是Django框架?2。Django和Web服务器是否有事要做?3. Python Web如何部署?4. Django自己的开发服务器可以在线支持多少人5. Django是Python的框架?Django基于Python的免费和开源代码Web框架。它遵循Model-Template-View(MTV)架构模式。它由Django软件基金会(DSF)维护,该基金会是由非营利组织建立的独立组织。
Django的主要目标是简化复杂,数据库驱动的网站的创建。此框架强调组件的重复性和“可插入”,更少的代码,低耦合,快速开发,不重复其自己的原理。使用Python,甚至用于设置文件和数据模型。Django还提供可选的管理创建,读取,更新和删除接口。该界面是由该省动态生成的,并通过管理模型进行了配置。
使用Django的一些知名网站包括公共广播服务,Instagram,Mozilla,Washingta,Disqus,Bitbucket和Nextdoor。
Django成立于2003年秋季。当时,劳伦斯每日报纸互联网程序员Adrian Holovaty和Simon Willison开始使用Python来构建申请。django的开发。它于2005年7月在BSD许可证下公开发布。该框架以吉他手Django Reinhardt.S命名,2008年6月,新成立的Django软件基金会(DSF)将来将维持Django。
2015年7月,Django Co -Founders和Django Co -Founders和Developers的一些Django Co -Founders和开发商举行了10周年纪念活动,在劳伦斯举行了10周年纪念活动。
Django的设计概念如下:
松动-django的目标是使堆栈中的每个元素独立。
较少编码的无代码,因此可以快速开发。
不要重复自己(干燥) - 一切都应在一个地方开发,不要一次又一次地重复。
快速开发-Django的概念是完成可能促进超快速发展的所有事情。
简单设计-Django严格按照自己的代码维护简单的设计,并且很容易遵循最佳的Web开发实践。
Django的一些优点如下:
对象关系映射(ORM)支持-django在数据模型和数据库引擎之间建立桥梁,并支持大量数据库系统,包括MySQL,Oracle,Postgres,Ett。
多语言支持-Django通过其构建的国际系统支持多语言网站。因此,您可以开发支持多种语言的网站。
Framework支持-Django已建立-Ajax,RSS,Cache和其他各种框架的支持。
GUI - Django为管理活动提供了一个良好的用户界面。
开发环境-Django具有轻巧的Web服务器,可促进末端到端应用程序的开发和测试。
Django是Python Web框架。就像大多数现代框架一样,Django支持MVC模式。
对于Python的基本问题,您可以看到此网页,Web链接的视频教程,希望我的答案能为您提供帮助。
Django是一个可用于开发Web项目的Web开发框架,Web需要运行服务器以运行,例如常用的Nginx,Apache,UWSGI等。这些服务器仅负责运行程序(项目编写的项目(由项目编写)django)。用户请求将发送它们。在服务器上,服务器请求Django,Django将相应的结果返回到Web服务器,然后返回给用户。Web服务器是用户和程序之间的桥梁。用户无法直接联系代码。所有Web项目都需要使用Web服务器运行,以便用户可以使用浏览器访问它。
那些了解PHP的人知道,PHP的正式环境部署非常简单。可以更改一些文件。使用fastcgi.in对比也是一分钟的问题,Python在Web应用程序中的部署非常复杂,这主要是因为有很多工具和主流服务器支持不足。在了解Python的生产环境部署方法之前,您可以首先澄清一些概念!非常重要!
CGI:
CGI是常见的网关接口。它是外部应用程序(CGI程序)和Web服务器之间的接口标准。这是用于在CGI程序和Web服务器之间传输信息的过程。CGI规范允许Web服务器执行外部程序并将其输出发送到Web浏览器。CGI将一组简单的静态媒体文档转变为一个完整的新交互式媒体。流行的CGI就像一座桥梁。在网页和Web服务器中连接执行程序。它将HTML接收到的指令传输到服务器执行程序,然后将服务器执行程序的结果返回到HTML页面。CGI的Cross -Platform性能非常好,并且几乎可以在任何操作系统上实现。
当CGI方法遇到连接请求(用户请求)时,首先创建CGI的子过程,激活CGI进程,然后处理请求,然后在处理后完成此子过程。这是fork-and任务模式因此,在CGI模式的连接请求中将有多少个CGI子处理,并且子过程重复加载是CGI性能较低的主要原因。大量占用内存,CPU时间等系统的系统,导致效率低。
CGI脚本工作流程:
浏览器通过HTML表单或超链接请求指向CGI应用程序的URL。
服务器执行服务设备和请求。指定CGI应用程序。
CGI应用程序所需的操作通常基于查看器输入的内容。
CGI应用程序已将结果格式化为可以通过网络服务器和浏览器(通常是HTML网页)理解的文档。
网络服务器将结果返回到浏览器。
Python有一个CGI模块来支持本机CGI程序
fastcgi:
FastCGI是一个可以在HTTP服务器和动态脚本语言之间进行通信的接口。大多数流行的HTTP服务器支持FastCGI,包括Apache,Nginx和LightTPD。同时,FastCGI也得到了许多脚本语言的支持,包括Python.fastcgi从CGI中得到改善。传统CGI接口方法的主要缺点是性能很差,因为每次HTTP服务器都会遇到一个动态程序,即动态程序,您需要重新启动脚本解析器才能执行解析,然后将结果返回到HTTP服务器。处理高的并发访问时几乎不可用。FastCGI就像长期的CGI一样,可以一直执行它。只要被激活,它就不会花时间每次叉去叉(这是CGI最受批评的叉子和执行模式。因为FastCGI程序不需要不断生成新的流程,因此它可以大大降低服务器的压力并产生高应用效率。它的速度效率至少比CGI技术高5倍。IS,FASTCGI程序可以在主机上执行其他网站服务器以外的其他网站服务器的请求。
FastCGI是CGI的开放扩展,与语言无关,扩展体系结构及其主要行为是将CGI解释器过程保持在内存并获得更高的性能。我们都知道,CGI解释器的重复加载是CGI性能低的主要原因。如果CGI解释器保存在内存中并接受了FastCGI流程管理器计划,则可以提供良好的性能,望远镜,失败功能等。FastCGI接口使用C/S结构,可以将HTTP服务器分开脚本解析服务器,同时启动在脚本解析服务器上的一个或多个脚本分析后卫。east Time HTTP服务器遇到动态程序,它可以直接传递到FastCGI进程以执行,然后返回所获得的所获得的程序结果到浏览器。此方法允许HTTP服务器处理静态请求或将动态脚本服务器的结果返回到客户端,从而在很大程度上改善了整个应用程序系统的性能。
Fastcgi的工作流程:
启动时,Web服务器加载FastCGI Process Manager(PHP-CGI或PHP-FPM或SPAWN-CGI)
FastCGI Process Manager本身将其初始化,启动多个CGI解释器进程(可见多个PHP-CGI),并等待Web服务器的连接。
当客户端请求到达Web服务器时,FastCGI流程管理器会选择并连接到CGI Inverter.Web Server将CGI环境变量和标准输入发送到FastCGI子过程PHP-CGI。
在处理FastCGI子过程之后,标准输出和错误消息从同一连接返回Web服务器。FastCGISub -Process关闭后,请求将进行处理。Fastcgisub -process等待并处理下一个连接从FastCGI Process Manager(在Web服务器中运行)。在CGI模式下,PHP-CGI在此处退出。
Fastcgi的功能:
打破传统的页面处理技术。传统的页面处理技术必须与Web服务器或应用程序服务器同一服务器中。该历史记录已被FastCGI Technology最早在n年前被打破。可以在服务器组中的任何服务器中安装FastCGI技术的应用。通过TCP/IP协议与Web服务器进行通信,这是适合的Web组也适用于有效的数据库控制。
清晰的请求模式。CGI技术没有明确的作用。在FASTCGI程序中,该程序具有明确的作用(响应设备的作用,身份验证的作用,滤波器角色)。
WSGI:
Python Web服务器网关接口(Python Web服务器网关接口(缩写为WSGI)是Web服务器与为Python语言定义的Web应用程序或框架之间的简单通用接口其他语言。wsgi是Web服务器与Web应用程序或应用程序框架之间的低级别接口,以增强可移植Web应用程序开发的开发。WSGI是基于现有的CGI标准设计的。
WSGI分为两个部分:一个是“服务器”或“网关”,另一个是“应用程序”或“应用程序框架”。处理WSGI请求时,服务器为应用程序提供了环境上下文和回调函数。该应用程序完成处理请求,结果通过上一个回调函数传递回服务器。SO所谓的WSGI中间件同时实现了API的两方,因此它可以在WSGI服务和WSGI服务之间起一个调解角色WSGI应用程序:从WSGI服务器的角度来看,中间件播放一个应用程序,从应用程序的角度来看,从角度来看,播放服务器。“中间件”组件可以执行以下功能:
重写环境变量后,根据目标URL,请求消息路由到不同的应用程序对象。
在一个过程中允许多个应用程序或应用程序框架。
负载平衡和远程处理,重新发布请求和网络上的响应消息。
执行内容后,应用XSLT样式表。
过去,如何选择适当的Web应用程序框架已成为困扰Python初学者的问题。这是因为通常,Web应用程序框架的选择将限制可用的Web服务器的选项,反之亦然。在那个时候,Python应用程序是为CGI,FastCGI,FastCGI,FastCGI,MOD_PYTHON设计的,甚至设计了对于特定Web服务器的自定义API接口。WSGI没有官方实现,因为WSGI更像是协议。只要这些协议,应用程序(应用程序)可以在任何服务器上运行,反之亦然。WSGI是CGI包装与FastCGI相比,Python是PHP的CGI包装。
WSGI将Web组件分为三个类别:Web服务器,Web中间件,Web应用程序,WSGI基本处理模式:WSGI Server-(WSGI MIDDERWARE)* -WSGI应用程序。
UWSGI:
UWSGI协议是UWSGI服务器自己的协议。它用于定义传输信息的类型(信息类型)。每个UWSGI数据包4Byte都被描述为传输信息类型,这是与WSGI相比的两件事。据说其效率是FCGI的10倍。有关特定协议,请参阅:UWSGI协议
以上四个可以将其理解为协议!协议!协议,通过这样的协议,Web服务可以与Web服务器和Web应用程序联系起来!
UWSGI:
UWSGI项目旨在为分布式群集的网络应用开发完整的解决方案。UWSGI主要用于Web及其标准服务,并成功地应用于各种不同的语言。为了通过无限扩展支持更多平台和语言。目前,您可以使用C,C ++和Objective-C编写插件。项目名称中的“ WSGI”是感谢同名的Python Web标准,因为WSGI已为Project.UWSGI开发了第一个插件-IN.UWSGI是一个实现WSGI协议,UWSGI,HTTP和其他协议的Web服务器。
UWSGI的主要特征如下:
超快的性能。
低内存职业(大约是Apache2的MOD_WSGI的一半)。
更多应用程序管理。
详细的日志功能(可用于分析性能和瓶颈)。
可以自定义高度(内存尺寸限制,在一定数量的服务等之后重新启动)。
枪支:
类似于UWSGI的工具是从Rails的部署工具(Unicorn)移植的。但是,它使用的协议是上一篇文章中提到的WSGI。这是python2.5(PEP 333)时定义的官方标准。根红幼苗是正的,部署相对简单。请单击此处以获取详细的教程。Gunicorn采用首选项模式。Gunicorn服务器与各种Web框架兼容。它只需要非常简单,轻巧的资源消耗,并且非常快速。它的特征是与django紧密结合,这对于部署特别方便。也有许多缺点。不支持HTTP 1.1,并且访问性能不高。它与UWSGI和GEVENT有一定的性能差距。
1.枪支设计
Gunicorn是一个主过程,Spawn有几个用于工作流程的Web服务器。总体过程控制工作过程的出现和灭亡,而工作过程只需要接受请求并处理该请求。此分离方法使重新加载代码非常非常方便,很容易增加或减少工作过程。工作过程的作者为扩展提供了很大的空间。它可以支持不同的IO方法,例如GEVENT,同步同步过程,异步异步过程,Eventlet等等。主过程和工作过程完全分开,因此Gunicorn实质上是控制该过程的服务。
2.枪支源代码结构
从application.run()开始,首先初始化配置,从文件读取,终端读取等完成配置。然后从仲裁器开始。仲裁者是实体总体过程的核心。它首先从配置类读取并设置它,然后初始化信号处理功能以创建插座。然后开始生成工作过程并根据工作过程数量执行产卵。然后他进入旋转状态,接收信号,处理信号,然后继续。唤醒此处的过程的方法是建立管道,通过信号处理函数写入管道,然后大师从select.select()醒来。
工作过程从产卵开始后,它开始初始化,然后处理信号,然后开始查询,处理HTTP请求,调用WSGI的应用程序末端,然后将Resopnse返回。然后继续。
同步同步过程的优点是每个请求分开,每个请求故障不会影响其他请求,但这会导致性能瓶颈。
龙卷风:
龙卷风是一个Python开发框架,它也是异步的非烧烤HTTP服务器。它的数据输出不符合上述一些一般协议。因为它是Web服务器本身,所以动态请求直接通过内部内部。将机制输出到用户请求的动态内容中。如果您将其用作单独的服务器并希望使用它来匹配其他框架,例如烧瓶,您需要使用WSGI协议。龙卷风构建了协议,龙卷风。wsgi.wsgicontainer。
WSGIREF:
Python配备了WSGI协议的WSGI服务器。WSGI服务器可以理解为符合WSGI规格,接收请求请求的Web服务器,封装了一系列的环境变量,根据WSGI规格称为已注册的WSGI应用程序,并最终返回对响应响应,client.django的构建 - 在服务器中。
以上可以理解为实施!完成!实现协议!
注意:mod_wsgi(Apache模块)实际上是WSGI协议的模块。现在几乎没有被放弃,所以我不会说太多。如果您有兴趣,请自己检查。
因此,如果您使用Django框架来开发应用程序,如果要部署到生产环境中,则必须无法使用Django。您可以使用UWSGI协议使用UWSGI服务器,也可以使用WSGI协议的Gunicorn或Tornado。您还可以使用fastcgi。,CGI模式NGINX,LIGHTTPD,APACHE SERVER。其他框架也是如此!可以理解,部署时可以实现这些概念,并且各种工具的组合是“知道它并知道它并知道为什么”的原因”。。
我们的小组Django和Tornado有两个框架,生产环境也使用了两种部署方法。Uwsgi和Gunicorn:
Django项目由NGINX+UWSGI部署,龙卷风项目由NGINX+Gunicorn部署:
nginx被重新存储为负载平衡和静态内容。龙卷风项目使用Substisord使用Gunicorn和Gunicorn一起管理枪支和管理龙卷风。我们都知道,因为Python的Gil存在,所以Python的同意采用了多个程序模式,因此我们的部署方式就是我们的方式,这就是我们的部署方式核心两个过程。
Django具有自身的效率,并且不使用Epoll/Kqueue。
很难说有多少人在线。
测试后,对于我的计算机,最初的Django项目的能力约为294。
相反,龙卷风是高性能的服务器。其文档的网络示例约为1324。
一个仅包含“ Hello World!”的静态文件在nginx上,约为2942
Django为我们提供了许多开发说明,并且大多数乏味的操作由Django集成在简单的命令行提示符中。现在打开命令提示
键入django-admin.py startproject之后
新闻命令,致电Django的控制台命令创建一个名为News的新项目,同时,Django还在新的新闻文件夹下生成以下四个不同的文本,以生成不同劳动分区的不同文本。
。
1. __init__.py
文件__init__.py可以向Python编译器指示当前文件夹的内容是Python Project模块。
2. Manage.py
Manage.py是一个Python脚本文件,与Django的命令行工具Django-Admin.py匹配以管理已建立的项目。
3.settings.py
这是Django项目的配置文件。与项目相关的工程模块和数据库的全局配置信息设置为settings.py。
4.urls.py
文件URLS.PY负责配置URL地址映射并管理URL的地址格式。
建立新项目时,如果您迫不及待地想知道新项目的外观,Django准备了一个轻巧的Web服务器,供您在开发过程中的任何时间进行测试和使用。
开发人员只需要在命令提示符下输入项目目录,然后键入命令manage.py
RunServer可以启动Web服务器以测试新建立的项目。如果没有错误启动,您可以看到以下提示消息:逗弄开发
服务器在位置运行
这意味着当前的项目已经可以通过该计算机的8000端口访问。
结论:以上是首席CTO注释为所有人编写的Django构建的Web服务器中相关内容的摘要,我希望您能为您提供帮助!如果您解决问题,请与更多关心的朋友分享。这个问题?