我正在做一些基本的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。
答案 0 :(得分:1)
没有。在WSGI规范的范围内,没有办法处理这个问题。在mod_wsgi邮件列表上进行搜索讨论。其中一个讨论是:
答案 1 :(得分:1)
如果应用程序返回的iterable具有close()方法,则服务器或网关必须在完成当前请求时调用该方法,无论请求是否正常完成,还是由于错误而提前终止。
因此,如果在输出迭代器完成之前调用close()
,则表示客户端已断开连接。