草庐IT

BaseHTTPServer

全部标签

Python BaseHTTPServer : How to get it to stop?

根据来源,BaseServer.shutdown()必须从与运行服务器的线程不同的线程调用。但是,我试图通过在Web请求中向服务器提供特定值来关闭服务器。请求处理程序显然在这个线程中运行,所以在我完成后它仍然会死锁:httpd=BaseHTTPServer.HTTPServer(('',80),MyHandler)print("Startingserverinthread")threading.Thread(target=httpd.serve_forever).start()我怎样才能完成我想要的?我必须设置一个套接字或管道或其他东西(请告诉我如何做到这一点,如果它是解决方案),主线

python bottle在WINDOWS上可以在同一个地址和端口上运行两个程序

我刚刚在Windows上遇到了一个关于Bottle的奇怪问题。当我测试我的Bottle代码时,我发现它可以在WINDOWS上使用相同的地址和端口运行多个相同的程序。但是当你试图在Linux或Mac上使用相同的地址和端口启动多个相同的程序时,它会报告以下错误:socket.error:[Errno48]Addressalreadyinuse我的Bottle代码是:frombottleimportroute,run,template@route('/hello/:name')defindex(name='World'):returntemplate('Hello{{name}}',name

python - 从 BaseHTTPRequestHandler 中的 HTTP 请求获取主机字段

我正在使用BaseHTTPRequestHandler类编写脚本。在do_GET(self)方法中,我需要从HTTP请求中获取Host字段的内容。我可以通过对str(self.headers)进行正则表达式来做到这一点,就像这里建议的那样:DeterminesitedomaininBaseHTTPServer,但这有点难看,我想知道是否有更简洁的方法来做到这一点。提前致谢。 最佳答案 属性self.headers是一个类似字典的结构,所以你可以这样做:defdo_GET(self):host=self.headers.get('Ho

python - 简单的网络服务器和 Apache 服务器有什么区别?

这里的simplewebserver是指处理简单HTTP请求的服务器,如下图:importBaseHTTPServerclassWebRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):defdo_GET(self):ifself.path==‘/foo’:self.send_response(200)self.do_something()else:self.send_error(404)defdo_something(self):print‘helloworld’server=BaseHTTPServer.HTTPServer(

python - 简单的网络服务器和 Apache 服务器有什么区别?

这里的simplewebserver是指处理简单HTTP请求的服务器,如下图:importBaseHTTPServerclassWebRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):defdo_GET(self):ifself.path==‘/foo’:self.send_response(200)self.do_something()else:self.send_error(404)defdo_something(self):print‘helloworld’server=BaseHTTPServer.HTTPServer(

python - 从 BaseHTTPHandler 解析 http GET 和 POST 参数?

BaseHTTPServer模块中的BaseHTTPHandler似乎没有提供任何方便的方式来访问http请求参数。解析路径中的GET参数和请求正文中的POST参数的最佳方法是什么?现在,我将它用于GET:defdo_GET(self):parsed_path=urlparse.urlparse(self.path)try:params=dict([p.split('=')forpinparsed_path[4].split('&')])except:params={}这适用于大多数情况,但我想要更强大的东西来正确处理编码和空参数等情况。理想情况下,我想要一个小而独立的东西,而不是一个

python - 从 BaseHTTPHandler 解析 http GET 和 POST 参数?

BaseHTTPServer模块中的BaseHTTPHandler似乎没有提供任何方便的方式来访问http请求参数。解析路径中的GET参数和请求正文中的POST参数的最佳方法是什么?现在,我将它用于GET:defdo_GET(self):parsed_path=urlparse.urlparse(self.path)try:params=dict([p.split('=')forpinparsed_path[4].split('&')])except:params={}这适用于大多数情况,但我想要更强大的东西来正确处理编码和空参数等情况。理想情况下,我想要一个小而独立的东西,而不是一个

python - 如何在 BaseHTTPRequestHandler.do_POST() 中提取 HTTP 消息体?

在BaseHTTPRequestHandler的do_POST()方法中,我可以通过属性self.headers访问POST请求的header。但我找不到用于访问消息正文的类似属性。那我该怎么做呢? 最佳答案 您可以像这样在do_POST方法中访问POST正文:对于python2content_len=int(self.headers.getheader('content-length',0))对于python3content_len=int(self.headers.get('Content-Length'))然后读取数据post

python - 如何在 BaseHTTPRequestHandler.do_POST() 中提取 HTTP 消息体?

在BaseHTTPRequestHandler的do_POST()方法中,我可以通过属性self.headers访问POST请求的header。但我找不到用于访问消息正文的类似属性。那我该怎么做呢? 最佳答案 您可以像这样在do_POST方法中访问POST正文:对于python2content_len=int(self.headers.getheader('content-length',0))对于python3content_len=int(self.headers.get('Content-Length'))然后读取数据post

python - 如何在 BaseHTTPRequestHandler 子类中停止 BaseHTTPServer.serve_forever()?

我正在一个单独的线程中运行我的HTTPServer(使用无法停止线程的线程模块...)并且希望在主线程也关闭时停止服务请求。Python文档指出BaseHTTPServer.HTTPServer是SocketServer.TCPServer的子类,它支持shutdown方法,但缺少在HTTPServer中。整个BaseHTTPServer模块的文档很少:( 最佳答案 另一种方法,基于http://docs.python.org/2/library/basehttpserver.html#more-examples,是:代替serve