如何跟踪Python/Django/uwsgi/nginx timeou

2024-10-17 06:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下设置。。。在

  • nginx监听公共端口80并将请求代理到localhost:10000
  • 运行django站点1的uwsgi监听本地主机:10000和生成一些网页。它还对localhost:10001上的web服务进行一些调用
  • 运行django site2的uwsgi监听localhost:10001,它对otherhost:1234上的web服务进行一些调用

otherhost正忙时,某些请求最多需要10分钟才能完成。不幸的是,整整2分钟后,nginx给出了一个502 Bad Gateway。在

据我所知,问题是。。。在

nginx超时:

我相信这不太可能,因为那是504,但我用的是:

proxy_read_timeout 1800;
proxy_connect_timeout 1800;

uwsgi 1超时:

我要像这样启动uwsgi(在两种情况下)

^{pr2}$

Django站点1呼叫站点2:

电话是这样打的:

    response = urllib.request.urlopen(Url, urlencode(Data).encode("utf-8"), 
               timeout=1800).read().decode("utf-8")

站点2呼叫其他站点:

{cd7>正在使用的库。我配置了10分钟的超时。我认为这不太可能,因为设置为2s会导致http500超时。。。在

我已经扫描了我的代码库timeout(和120120000,甚至在绝望中2),但我找不到设置超时的任何地方——我假设这是来自的某个的默认值。在

如果我跳过nginx而执行以下操作:

curl -m1800 -XGET 'http://localhost:10000/UI/Url'

我明白了

curl: (52) Empty reply from server

一分钟后。在

有什么明显的东西我遗漏了吗?有什么好方法来追踪这个?在


Tags: django端口weblocalhosturl代理read站点
2条回答

尝试增加uwsgi_read_timeout。在

你的设置很“奇怪”:

nginx->;uwsgi http路由器->;uwsgi

而不是

nginx->;uwsgi

也许你有一些很好的理由,但是在这种情况下,你需要设置 uwsgi http路由器和uwsgi通过http超时1800

如果http路由器不是您想要的/需要的,您可以让uwsgi使用http套接字选项来讲http

相关问题 更多 >