python做web开发时用的是什么服务器?
微wx笑 2020-03-29【网页网站】 5 0关键字: Python web 服务器
python做web开发时用的是什么服务器?为什么说这个问题?今天一个小伙伴提了一个问题,如下图:这应该是参考我的文章:《Python入门》第一个Python Web程序——简单的Web服务器但是
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 服务器吗?
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/web/2020-03-29/353.html