【问题标题】:Fixing broken pipe error in uWSGI with Python使用 Python 修复 uWSGI 中的管道损坏错误
【发布时间】:2014-07-30 18:18:34
【问题描述】:

在 Python 中访问 REST 资源 (my_resource) 时,uWSGI 服务器在其日志中抛出以下错误:

SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request my_resource (ip <my_ip>) !!!
uwsgi_response_write_body_do(): Broken pipe [core/writer.c line 164]
IOError: write error

这似乎与超时有关(客户端在请求完成处理之前断开连接)。

这是什么类型的超时,如何解决?

【问题讨论】:

    标签: python rest timeout wsgi uwsgi


    【解决方案1】:

    这取决于您的前端服务器。例如 nginx 有 uwsgi_read_timeout 参数。 (一般设置为 60 秒)。 uWSGI http 路由器作为 --http-timeout 默认为 60 秒,依此类推。当您在谈论休息 api 时,我很怀疑它需要超过 60 秒才能生成响应,您确定没有错误的响应标头触发前端网络服务器关闭连接吗?

    【讨论】:

    • 是的,我很确定。这个单一请求需要更长的时间才能生成响应,这是有特殊原因的,我们将在必要时进行处理。然而,就目前而言,增加超时似乎是要走的路。谢谢!
    • 我也有同样的问题,无法通过这种方式解决。我正在使用 Flask,我希望请求会更大一些,因为它们会带来持续时间在 2 秒到 15 秒之间可变的音频二进制数据。即使请求中有少量音频样本,我也会在错误日志中不断收到此消息。
    • 我遇到的问题是修复了升级 openssl 版本 1.0.2g
    【解决方案2】:

    如果您使用的是uwsgi nginx 插件,请考虑使用

    uwsgi_connect_timeout 180;
    uwsgi_read_timeout 180;
    uwsgi_send_timeout 180;
    

    【讨论】:

    • 在哪个文件中添加这些值?
    • 在 nginx.conf 中
    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2016-07-21
    • 1970-01-01
    • 2014-04-28
    相关资源
    最近更新 更多