20.18. BaseHTTPServer —基本的 HTTP 服务器

Note

BaseHTTPServer模块已在 Python 3 中合并到http.server中。2to3工具在将源转换为 Python 3 时将自动适应导入。

源代码: Lib/BaseHTTPServer.py


该模块定义了两个用于实现 HTTP 服务器(Web 服务器)的类。通常,不直接使用此模块,而是将其用作构建Function正常的 Web 服务器的基础。请参阅SimpleHTTPServerCGIHTTPServer模块。

第一类HTTPServerSocketServer.TCPServer子类,因此实现SocketServer.BaseServer接口。它创建并侦听 HTTP 套接字,将请求分派到处理程序。创建和运行服务器的代码如下所示:

def run(server_class=BaseHTTPServer.HTTPServer,
        handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
    server_address = ('', 8000)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()

处理程序将解析请求和 Headers,然后调用特定于请求类型的方法。方法名称是根据请求构造的。例如,对于请求方法SPAM,将不带任何参数调用do_SPAM()方法。所有相关信息都存储在处理程序的实例变量中。子类不需要重写或扩展init()方法。

BaseHTTPRequestHandler具有以下实例变量:

BaseHTTPRequestHandler具有以下类变量:

2.6 版的新Function:以前,Content Type 始终为'text/html'

BaseHTTPRequestHandler实例具有以下方法:

结果看起来像'Sun, 06 Nov 1994 08:49:37 GMT'

2.5 版中的新Function:* timestamp *参数。

20.18.1. 更多例子

要创建不会永远运行但要满足某些条件的服务器,请执行以下操作:

def run_while_true(server_class=BaseHTTPServer.HTTPServer,
                   handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
    """
    This assumes that keep_running() is a function of no arguments which
    is tested initially and after each request.  If its return value
    is true, the server continues.
    """
    server_address = ('', 8000)
    httpd = server_class(server_address, handler_class)
    while keep_running():
        httpd.handle_request()

See also

  • Module CGIHTTPServer

  • 支持 CGI 脚本的扩展请求处理程序。

  • Module SimpleHTTPServer

  • 基本请求处理程序,用于将响应限制为实际在文档根目录下的文件。

首页