http.server没有按照python.org的例子提供页面

时间:2017-04-15 07:17:30

标签: python httpserver

我试图在本地网络上启动一个简单的目录服务器但是我收到了这个错误

  

错误回复

     

错误代码:501

     

消息:不支持的方法(' GET')。

     

错误代码说明:HTTPStatus.NOT_IMPLEMENTED - 服务器没有   支持这项行动。

这是https://docs.python.org/3/library/http.server.html给出的示例如果我从命令行运行它,它就可以运行python3 -m http.server。我需要随着时间的推移控制这个服务器,所以我需要打开它一段时间并自动关闭它

from http.server import BaseHTTPRequestHandler, HTTPServer




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

1 个答案:

答案 0 :(得分:1)

答案在您链接到的documentation

  

HTTPServer必须为RequestHandlerClass   实例化,该模块提供三种不同的变体:

     

class http.server.BaseHTTPRequestHandler( request, client_address, server )

     

此类用于处理到达的HTTP请求   服务器。 本身,它无法响应任何实际的HTTP请求;它   必须进行子类化以处理每个请求方法(例如GET或   POST即可。 ...

对于您的情况,您应该使用http.server.SimpleHTTPRequestHandler代替:

  

class http.server.SimpleHTTPRequestHandler( request, client_address, server )

     

此类直接提供当前目录及以下文件   将目录结构映射到HTTP请求。