错误:读取上游时readv()失败(104:通过对等方重置连接)

时间:2012-05-01 03:29:37

标签: post wsgi flask dotcloud

我有带有nginx和uwsgi的烧瓶的facebook应用程序。当它从Facebook收到POST时,它总是有错误:

readv() failed (104: Connection reset by peer) while reading upstream

但是当我直接访问我的应用程序(使用GET方法)时,它运行顺利。我做了什么:

  1. 仅使用POST方法限制@ app.route - 不起作用。
  2. 在wsgi中添加限制:uwsgi_buffer_size(如果来自facebook的请求很大),uwsgi_harakiri(如果uwsgi在完成请求之前提供超时) - 不起作用。
  3. 我在django中有解决方法,但无法弄清楚如何在烧瓶中实施。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

这是uwsgi的错误。您可以从[uWSGI] Several bugs获得更多信息。

简单的解决方案是你必须通过wsgi.input读取POST主体,即使POST主体为null或者你不需要POST参数。

答案 1 :(得分:0)

问题是“上游”(nginx正在代理的实际进程)正在关闭连接。

在我的情况下,Django是我的网络服务器,我需要将DATA_UPLOAD_MAX_NUMBER_FIELDS设置得更大,因为POST请求中的字段太多了。