要想学python 26,python必须懂的知识些什么知识

作为一个python开发者需要知道的关于服务器的知识 - Python - 伯乐在线
& 作为一个python开发者需要知道的关于服务器的知识
服务器的相关知识曾经让我非常困惑。我相信还有很多的Python开发者和我有着类似的遭遇。所以,请让我和你分享我知道的一切关于服务器的知识,来解开这些困惑。
HTTP: 统治万维网的协议
HTTP(超文本传输协议)是一种通信协议,它被用来发送和接收因特网上的网页以及其他数据文件。它是一套规则和相关参数的集合,这些规则和参数控制着网页和其他数据文件在因特网上的传输。
浏览器是一个HTTP客户端,因为它会发送请求到一个HTTP服务器(网页服务器),HTTP服务器随后把响应发送回客户端。HTTP监听的标准(和默认)端口是80端口,尽管其实可以使用任何的端口。这篇对HTTP进行了非常好的解释。请务必浏览一下。如果你想要钻研一下HTTP,请查看 ,它已经被多种请求注解(RFCs())所替代。你可以在搜索这些请求注解。
HTTP 服务器
因此,HTTP请求和响应有其特定的格式!当用户进入某个网站的时候,他们的浏览器与站点的网页服务器进行了连接(这个过程称之为请求)。服务器在文件系统中查询文件,并将其发送回用户的浏览器,浏览器会显示这些文件(这个过程称之为响应)。这便是HTTP协议的工作方式。看上去很简单?
动态网站并不基于文件系统中的文件,取而代之的是,当有请求到达的时候,由一个网站服务器上面运行的程序来处理。该程序会生成内容并将其返回给用户。它们可以做很多有用的事,比如显示BBS上的帖子,显示你的电子邮件,配置软件或是显示当前的时间。
不论客户端或者服务器是如何实现的,总有办法来生成有效的HTTP请求,让客户端正常工作,同样,服务器要能够理解发送给它的HTTP请求并且为所有到达的请求生成有效的HTTP响应。客户端和服务器都必须具有相互连接的能力(这种情况下会使用TCP进行可靠的连接),能够传输HTTP请求(客户端 -& 服务器)和HTTP响应(服务器 -& 客户端)。
HTTP服务器(是一个程序)会接受这些请求,并且会让你的python获取HTTP请求方法以及URI。HTTP服务器会处理很多来自图片和静态资源的请求。 那么它又是如何生成动态urls的呢?
@app.route('displaynews&name_of_category&',methods=['GET'])
@app.route('displaynews&name_of_category&',methods=['GET'])
在Flask中你可能使用过这个装饰器, 是一个python微型框架。Flask会把来自浏览器的请求和该路由进行模式匹配。但是flask是如何解析来自浏览器的http请求的呢?HTTP服务器会把动态生成的urls传递给应用服务器。哇哦!等等。。应用服务器又是什么东西呢?
Apache的 HTTPD 和nginx是两个常用的python网站服务器。
应用服务器
大多数的HTTP服务器是由C或C++写成的,所以它们不能直接执行Python脚本——在服务器和程序之间,需要一个桥梁。这个桥梁,或者说是接口,定义了程序应该如何和服务器进行交互。这就是应用服务器。动态生成的urls从网站服务器传递到应用服务器。应用服务器对url进行匹配并执行该路由对应的脚本。然后它(应用服务器)把响应返回给网站服务器,网站服务器生成一个HTTP响应,并将其返回给客户端。
对于python来讲,有很多可以用的应用服务器。 这个 列出了不同的应用服务器。起初,pyhton开发者们使用低层网关来进行部署。
通用网关接口(CGI)
这个接口,通常被称之为“CGI”,是最古老的应用服务器,它几乎被任何网站服务器所天生支持,无需专门安装。使用CGI和网站服务器进行通信的程序,需要针对每一个请求单独开启。所以每一个请求都会启动一个全新的Python解释器——这还是需要花费一点时间的——因此让整个接口只能用在低负载的情况下。
如果你想要学习如何编写一个CGI。请按照JM Marshall的这篇 去做。
mod_python
mod_python是一个Apache HTTP 服务器模块,它在服务器上面集成了Python语言。在上世纪90年代和本世纪初期,大多数的Python web应用都运行在配置了 mod_python 的Apache 上。但是,mod_python并不是标准规范。在使用mod_python时会有一些。Python web应用需要一种可持续的运作方式。
是另一种用来部署的低层网关。它们尝试解决CGI的性能问题。这些低层的网关接口不依赖特定语言。
WSGI的崛起
一个Web服务器网关接口(WSGI)服务器为运行Python web应用实现了服务器端的WSGI接口。 WSGI适合各种规模并且可以在多线程或多进程环境下工作,我们同样可以使用WSGI编写中间件。中间件对于会话处理,授权和其他很多任务都非常有用。你可以在 里面学到如何编写你自己的WSGI实现。给出了不同WSGI实现的比较。
Gunicorn and uWSGI Gunicorn 和 uWSGI
Gunicorn 和 uWSGI 是两个不同的应用服务器。是一个为UNIX设计的Python WSGI HTTP服务器。配置非常简单,和多种web框架兼容,而且它足够的快。
digitalocean的讲解了如何配置gunicorn和nginx。
是另一种备选的应用服务器。uWSGI是一个高性能,强大的WSGI服务器。uWSGI有很多可配置选项, digitalocean的 讲解了如何配置uWSGI和nginx。
Apache vs Nginx
Anturis 在他的上已经非常清晰的阐述了两者之间的不同。这篇文章解释了apache和nginx是如何工作的。
总结一下:
Apache 通过创建进程和线程来处理额外的连接。而Nginx被称为事件驱动,异步,并且非阻塞。
Apache非常强大但是Nginx非常快。Nginx可以更快呈现静态内容。
Nginx包含了先进的负载均衡以及缓存能力。
Nginx比Apache轻量级的多。
organic agency对Apache和nginx进行了基准测试。结果可以在看到。
我用的是什么
我使用Nginx因为它很快、很轻巧,并且我发现配置它更容易。Gunicorn配置起来也很简单所以我用gunicorn。uWsgi也经常被用来替代gunicorn。
请和我分享一下你的python应用倾向于使用哪一种服务器呢?
打赏支持我翻译更多好文章,谢谢!
打赏支持我翻译更多好文章,谢谢!
任选一种支付方式
关于作者:
可能感兴趣的话题
o 256 回复
关于 Python 频道
Python频道分享 Python 开发技术、相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线}

我要回帖

更多关于 想学python 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信