假设我有以下申请:
import cherrypy
class HelloWorld(object):
def my_handler(self, a):
assert a == "foo"
def index(self, a):
# Register parameter a/my_handler/...
return "A" * 100000
index.exposed = True
cherrypy.quickstart(HelloWorld())
以下客户:
import httplib
h = httplib.HTTPConnection('localhost', 8080)
h.request("GET", "/?a=foo")
r = h.getresponse(True)
print r.read(10)
我想明确处理客户端断开连接(无论是否礼貌)并因此没有收到响应的情况。因此,在此示例中,应调用my_handler
,因为在连接关闭之前未传递GET
响应。
CherryPy文档指的是TCP堆栈比我的目标更高的错误(c.f。cperror,cprequest的error_response)。我挖掘了一些CherryPy源代码,并提到了套接字错误in e.g. read_request_line and simple response。我不清楚这些是否暴露在任何地方,更重要的是,如果有一种规范的方法可以解决。
为什么,你可能会问,我会对这样的事情感兴趣吗?轻微滥用HTTP语义,验证GET响应是否已经传递是很重要的;否则需要进行一些会计处理。