python超简单的web服务器

今天无意google时看见,心里突然想说,python做web服务器,用不用这么简单啊,看来是我大惊小怪了.

web1.py

#!/usr/bin/python
import SimpleHTTPServer
SimpleHTTPServer.test()


web2.py

#!/usr/bin/python
import SimpleHTTPServer
import SocketServer
import os

PORT = 80
WEBDIR = "f:/python语言学习"

class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def translate_path(self, path):
        os.chdir(WEBDIR)
        return SimpleHTTPServer.SimpleHTTPRequestHandler.translate_path(self,path)

try:
    httpd = SocketServer.TCPServer(("", PORT), Handler)
    print "dir %s serving at port %s"%(repr(WEBDIR), PORT)
    httpd.serve_forever()
except:pass

web3.py , cgi server ,7777端口, 在web3.py执行目录下新建cgi-bin目录 , 在cgi-bin目录写hello.py

web3.py

from CGIHTTPServer import CGIHTTPRequestHandler  
from BaseHTTPServer import HTTPServer     
server_address=('',7777)  
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)  
httpd.serve_forever()  

hello.py

#!c:/Python24/python.exe

print "HTTP/1.0 200 OK"
print "Content-Type: text/html"
print ""
print "

" print "Hello World!" print "

"

以下这些是需要安装了 twisted 才能使用的
web4.py

from twisted.web.resource import Resource                                       
from twisted.web import server                                                   
from twisted.web import static                                                   
from twisted.internet import reactor 
                                                                                                              
                                                      
class ReStructured( Resource ):                                                                                                                                 
   def __init__( self, filename, *a ):                                         
       self.rst = open( filename ).read( )                                                                                                               
                                                                                
   def render( self, request ): 
       return self.rst               
PORT=8888                                                                                

resource = static.File('/')                                                   
resource.processors = { '.html'  : ReStructured }                               
resource.indexNames = [ 'index.html']                                   
                                                                                
reactor.listenTCP(                                                               
       PORT,                                                                   
       server.Site( resource )                                                 
       )                                                                       
reactor.run( )  

web5.py, 这是又是支持cgi的,又是需要twisted模块的,也是需要在cgi-bin目录下执行,上边的hello.py也能用

# -*- coding: utf-8 -*-
from twisted.internet import reactor
from twisted.web import static, server, twcgi
from twisted.web.resource import Resource

class Collection(Resource):
        def render_GET(self, request):
                return "hello world 你好"

root = static.File('./')
root.putChild('', Collection())
root.putChild('img', static.File('./img'))
root.putChild('cgi-bin', twcgi.CGIDirectory('cgi-bin'))
reactor.listenTCP(80, server.Site(root))
reactor.run()

当然,想实现复杂功能还是需要自己搞代码的,只不过想惊叹python的模块集成得太多功能了.
python超简单的web服务器。

关于无聊人

一个无聊人而已
此条目发表在python分类目录。将固定链接加入收藏夹。

6 Responses to python超简单的web服务器

  1. 陈青说:

    不错

  2. aenon说:

    simplehttpserver模块的性能比较低。

  3. 大熊德说:

    我想知道。。你的wp的文章编辑插件是什么,那个代码段很不错。

  4. sky说:

    你好,请问下,你的web3.xml中如何访问hello.py?

    http://127.0.0.1:7777/hello ?
    http://127.0.0.1:7777/hello.py ?

  5. sky说:

    已经知道了

  6. 舶岩说:

    能不能和你交流一下,我是一个大二的学生,正在做一个比赛,想做个简单的后台服务器,看了您的东西,觉得简单实用,想和您更深入的交流,能不能加我QQ好友,深入请教一下。1270834488

发表评论

电子邮件地址不会被公开。 必填项已用*标注