IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    testcs_dn发表于 2017-03-23 08:24:40
    love 0

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

    为什么说这个问题?

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


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

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

    创建测试文件:test.py

    #!/usr/bin/env python
    print "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笑)============




沪ICP备19023445号-2号
友情链接