python做web开发时用的是什么服务器?

来源:互联网 发布:java 并发服务器 编辑:程序博客网 时间:2024/06/10 06:21

python做web开发时用的是什么服务器?

为什么说这个问题?

今天一个小伙伴提了一个问题,如下图:


这应该是参考我的文章:《Python入门》第一个Python Web程序——简单的Web服务器

但是他想访问执行一个 python 文件,结果呢,把源代码显示出来了!

创建测试文件:test.py

#!/usr/bin/env pythonprint "200 OK" print "Content-Type: text/plain" print "" print "Hello CGI!"

经过测试:

使用 “python -m BaseHTTPServer” 启动服务,访问 .py 文件输出如下:


使用 “python -m SimpleHTTPServer” 启动服务,访问 .py 文件输出如下:


使用“python -m CGIHTTPServer”启动服务,访问 .py 文件输出如下:


但是需要注意,文件必须放在“cgi-bin”或“htbin”目录下,目录必须小写。我们看下图


如果没有把文件放在“cgi-bin”或“htbin”目录下,就会出现这样的情况;上面提到的小伙伴就是这个问题。但如果使用 SimpleHTTPServer 不论放在哪,同样会遇到这样的问题。

服务是怎么启动的?

Windows下打开CMD,切换到你的Web根目录(是一个相对的概念,比较好理解的就是“cgi-bin”或“htbin”目录所在目录),


执行上面提到的命令,如:“python -m CGIHTTPServer”

Linux,Mac 等打开终端,执行上面提到的命令。



有哪些服务器?

经过一些尝试和了解,

python 的 web 服务器可以基于基类自己实现,也可以直接使用基类启动;

可以使用 CGI 的方式使用 CGIHTTPServer ,把文件放在“cgi-bin”或“htbin”目录下支持 .py 扩展名直接访问;

除了CGI,Python还支持wsgi

WSGI是Web Server Gateway Interface的缩写。以层的角度来看,WSGI所在层的位置低于CGI。但与CGI不同的是WSGI具有很强的伸缩性且能运行于多线程或多进程的环境下,这是因为WSGI只是一份标准并没有定义如何去实现。实际上WSGI并非CGI,因为其位于web应用程序与web服务器之间,而web服务器可以是CGI,mod_python(注:现通常使用mod_wsgi代替),FastCGI或者是一个定义了WSGI标准的web服务器就像python标准库提供的独立WSGI服务器称为wsgiref。

还有一个不错的选择是:uwsgi

有了这些,Python 还可以和Nginx,Apache 组合使用,提供更高的并发支持;

还可以配合使用:Supervisor

[Supervisor| http://supervisord.org/configuration.html ]可以同时启动多个应用,最重要的是,当某个应用Crash的时候,他可以自动重启该应用,保证可用性。

像一些知名的框架 Django、tornado 框架,都是以 WSGI 的方式运行的。

还有更好的Python Web 服务器吗?

======================文档信息===========================

版权声明:非商用自由转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.net/testcs_dn)

==============本文首发于个人微信订阅号(微wx笑)============


1 1