我有以下设置......
localhost:10000
localhost:10001
localhost:10001
上进行侦听,其中包括otherhost:1234
当otherhost
忙时,一些请求预计最多需要10分钟才能完成。不幸的是,在2分钟之后,nginx会给出502 Bad Gateway
。
据我所知,问题必须是......
我认为这不太可能,因为那将是504但我正在使用:
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
我正在推出像这样的uwsgi(在这两种情况下)
nohup uwsgi --http :8000 --chdir /opt/Path/To/Project --module Project.wsgi
--virtualenv /opt/pyenv --enable-threads --logto /var/log/LogFile.log -p 1
--threads 50 -t 1800 2> /dev/null &
这样的电话是这样的:
response = urllib.request.urlopen(Url, urlencode(Data).encode("utf-8"),
timeout=1800).read().decode("utf-8")
这是由使用HTTPConnectionPool
的库完成的。我配置了超时10分钟。我认为这不太可能,因为将它设置为(比方说)2s会导致超时时出现Http 500 ......
我已经扫描了我的代码库timeout
(以及120
,120000
,甚至在绝望2
中),但我无法找到超时的任何地方被设置 - 我认为这是某事的默认设置。
如果我跳过nginx并执行:
curl -m1800 -XGET 'http://localhost:10000/UI/Url'
我得到了
curl:(52)来自服务器的空回复
一分钟后。
我有什么明显的遗失吗?跟踪这个的好方法是什么?
答案 0 :(得分:2)
你有一个非常“奇怪”的设置:
nginx - > uwsgi http router - > uwsgi
而不是
nginx - > uwsgi
也许你有充分的理由,但在这种情况下你需要设置之间的超时 uwsgi http路由器和uwsgi通过--http-timeout 1800
如果http路由器不是你想要/需要你可以让uwsgi用http: - http-socket选项说话
答案 1 :(得分:0)
尝试增加uwsgi_read_timeout。