Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django nginx/gunicorn连接挂起60秒_Django_Nginx_Timeout_Gunicorn - Fatal编程技术网

Django nginx/gunicorn连接挂起60秒

Django nginx/gunicorn连接挂起60秒,django,nginx,timeout,gunicorn,Django,Nginx,Timeout,Gunicorn,我正在对nginx->gunicorn->Django应用程序执行HTTP POST请求。响应主体很快返回,但请求在大约60秒后才完全完成 我所说的“完全完成”是指我尝试过的各种客户端(Chrome、wget、我正在构建的Android应用程序)表明请求仍在进行中,好像在等待更多数据。从Wireshark收听时,我看到所有数据都很快到达,60秒后,ACK FIN终于出现了 本地开发服务器(/manage.py runserver)上的相同POST请求会快速执行。此外,它绕过nginx,直接对gu

我正在对nginx->gunicorn->Django应用程序执行HTTP POST请求。响应主体很快返回,但请求在大约60秒后才完全完成

我所说的“完全完成”是指我尝试过的各种客户端(Chrome、wget、我正在构建的Android应用程序)表明请求仍在进行中,好像在等待更多数据。从Wireshark收听时,我看到所有数据都很快到达,60秒后,ACK FIN终于出现了

本地开发服务器(
/manage.py runserver
)上的相同POST请求会快速执行。此外,它绕过nginx,直接对gunicorn快速执行。在Apache/mod_wsgi设置中也可以快速工作

GET请求没有问题。甚至其他的帖子请求也可以。我知道的一个区别是,这个特定的请求返回201而不是200

我认为这与
内容长度
标题、封闭连接与保持连接有关,但还不知道应该如何正确工作

  • 后端服务器(gunicorn)当前正在关闭连接,这是有意义的
  • 后端服务器应该包括
    内容长度标题
    ,还是
    传输编码:分块
    ?或者nginx是否应该能够在没有这些功能的情况下进行处理,并根据需要添加它们
  • 我假设连接保持活动状态很好,并且不应该在nginx中禁用

更新:在
nginx.conf
中将
keepalive\u timeout
设置为0可以解决我的问题。但是,当然,“保持活力”已经不复存在了。我还是不确定是什么问题。可能堆栈中的某些东西(我的Django应用程序或gunicorn)没有正确实现分块传输,并且会混淆客户端。

听起来您的上游服务器(gunicorn)在某种程度上在特定的api调用上保持连接打开-我不知道为什么(我想这取决于您的代码),但nginx中的默认选项是60秒,因此,出于某种原因,似乎没有收到这种回应

我使用了一个非常类似的设置,我一般不会注意到帖子上的任何问题,或者任何其他请求

请注意,
return-HttpResponse(status=201)
以前曾引起过我的问题-Django似乎更喜欢显式的空主体:
return-HttpResponse(“,status=201)
。我通常会把一些东西放在我期望的地方——这可能是需要注意的