检测web.py中过早关闭的连接

时间:2009-10-20 19:01:49

标签: mod-wsgi web.py

在请求处理过程中,Web.py是否有办法检测和处理用户关闭的连接?

我尝试设置unloadhook处理程序,但在这种情况下不会调用它。只有在请求成功完成后才会调用它:


class handler:
    def __init__(self):
        pass

    def GET(self):
        try:
            while(True):
                pass
        except Exception, e:
            logger.debug(e)

def unload():
    logger.debug('unloaded')

try:
    app = web.application(urls, globals())
    app.add_processor(web.unloadhook(unload))
    application = app.wsgifunc()

except Exception, e:
    logger.debug(e)

我在浏览器中打开应用程序,当它在while循环中开始旋转时,我打破了请求,但没有抛出任何异常。

2 个答案:

答案 0 :(得分:1)

设置超时,并捕获专门涵盖已关闭连接情况的异常类型。

请参阅this on exception handling in Python

答案 1 :(得分:1)

由于Web服务器和WSGI本身的工作方式,通常没有可靠的方法。有关解释,请阅读:

http://groups.google.com/group/modwsgi/browse_frm/thread/8ebd9aca9d317ac9