wsgi - 处理客户端超时

时间:2014-01-23 14:59:44

标签: python wsgi uwsgi

我正在做一些基本的wsgi:

def application(environ, start_response):
    start_response("200", [])
    result = some_long_func()
    return [result]

some_long_func完成之前,客户端会不时断开连接,我在日志中看到以下内容:

SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected)...

有没有办法在应用程序级别处理断开连接的客户端,即在application()返回之前?

我的服务器是uwsgi(独立)。没有框架,只有纯python。

2 个答案:

答案 0 :(得分:1)

没有。在WSGI规范的范围内,没有办法处理这个问题。在mod_wsgi邮件列表上进行搜索讨论。其中一个讨论是:

答案 1 :(得分:1)

  

如果应用程序返回的iterable具有close()方法,则服务器或网关必须在完成当前请求时调用该方法,无论请求是否正常完成,还是由于错误而提前终止。

因此,如果在输出迭代器完成之前调用close(),则表示客户端已断开连接。