python超简单的web服务器

时间:2022-07-09 17:52:04

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

web1.py

 
123 #!/usr/bin/pythonimport SimpleHTTPServerSimpleHTTPServer.test()

 


web2.py

 
123456789101112131415161718 #!/usr/bin/pythonimport SimpleHTTPServerimport SocketServerimport os PORT = 80WEBDIR = "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

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

 

hello.py

 
12345678 #!c:/Python24/python.exe print "HTTP/1.0 200 OK"print "Content-Type: text/html"print ""print "<p>"print "Hello World!"print "</p>"

 

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

 
1234567891011121314151617181920212223 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也能用

 
123456789101112131415 # -*- coding: utf-8 -*-from twisted.internet import reactorfrom twisted.web import static, server, twcgifrom 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服务器。