网页网站您现在的位置是:首页 > 博客日志 > 网页网站

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

<a href='mailto:'>微wx笑</a>的头像微wx笑 2020-03-29网页网站 5 0关键字: Python  web  服务器  

python做web开发时用的是什么服务器?为什么说这个问题?今天一个小伙伴提了一个问题,如下图:这应该是参考我的文章:《Python入门》第一个Python Web程序——简单的Web服务器但是

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

为什么说这个问题?

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


cj0无知

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

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

创建测试文件:test.pycj0无知


cj0无知

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

经过测试:cj0无知

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


cj0无知

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


cj0无知

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


cj0无知

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


cj0无知

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

服务是怎么启动的?cj0无知

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


cj0无知

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

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

cj0无知


cj0无知


cj0无知

有哪些服务器?cj0无知

经过一些尝试和了解,cj0无知

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

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

除了CGI,Python还支持wsgicj0无知

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。
cj0无知

还有一个不错的选择是:uwsgicj0无知

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

还可以配合使用:Supervisorcj0无知

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

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

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


cj0无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/web/2020-03-29/353.html

很赞哦! () 有话说 ()