编写一个自己的Web服务器,处理客户端请求,返回一个简单的欢迎消息。Python集成了一个非常简单的Web服务器,可以在命令行中启动,如下所示:
$ python -m SimpleHTTPServer 8080
执行这个命令后会在端口8080上启动一个HTTP Web服务器。通过在浏览器中输入http://localhost:8080,可以访问这个服务器。将看到的是运行上述命令时所在文件夹里的内容。如果这个文件夹中有能被Web服务器识别的索引文件,例如index.html,在浏览器中就会显示这个文件的内容。如果想完全掌控Web服务器,就得启动自己定制的HTTP服务器。
import argparse
import sys
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
DEFAULT_HOST = '127.0.0.1'
DEFAULT_PORT = 8800
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
self.wfile.write("Hello from server!")
return
class CustomHTTPServer(HTTPServer):
def __init__(self, host, port):
server_address = (host, port)
HTTPServer.__init__(self, server_address, RequestHandler)
def run_server(port):
try:
server= CustomHTTPServer(DEFAULT_HOST, port)
print("Custom HTTP server started on port: {}".format(port))
server.serve_forever()
except Exception as e:
print("Error: {}".format(e))
except KeyboardInterrupt:
print("Server interrupted and is shutting down...")
server.socket.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Simple HTTP Server Example')
parser.add_argument('--port', action="store", dest="port", type=int, default=DEFAULT_PORT)
given_args = parser.parse_args()
port = given_args.port
run_server(port)