如何在CherryPy中为套接字错误注册异常处理程序?

时间:2016-05-14 00:28:58

标签: python sockets http tcp cherrypy

假设我有以下申请:

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。cperrorcprequest的error_response)。我挖掘了一些CherryPy源代码,并提到了套接字错误in e.g. read_request_line and simple response。我不清楚这些是否暴露在任何地方,更重要的是,如果有一种规范的方法可以解决。

为什么,你可能会问,我会对这样的事情感兴趣吗?轻微滥用HTTP语义,验证GET响应是否已经传递是很重要的;否则需要进行一些会计处理。

0 个答案:

没有答案