gpt4 book ai didi

python - 如何跟踪 Python/Django/uwsgi/nginx 超时

转载 作者:行者123 更新时间:2023-12-01 05:42:29 32 4
gpt4 key购买 nike

我有以下设置...

  • nginx 监听公共(public)端口 80 并将请求代理到 localhost:10000
  • 运行 django site 1 的 uwsgi 监听 localhost:10000 并生成一些网页。它还对 localhost:10001
  • 上的 Web 服务进行一些调用
  • 运行 django 站点 2 的 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(在两种情况下)

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 &

Django 站点 1 调用站点 2:

调用的方式如下:

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

站点 2 调用其他站点:

这是由使用 HTTPConnectionPool 的库完成的。我已将超时配置为 10 分钟。我认为这不太可能,因为将其设置为(例如)2s 会导致 Http 500 超时...

我已经扫描了我的代码库是否有超时(以及120120000,甚至在绝望中2)但我找不到任何设置超时的地方 - 我认为这是某事的默认值。

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

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

我明白了

curl: (52) Empty reply from server

正好一分钟后。

有什么明显我遗漏的东西吗?有什么好的方法可以追踪到这个人吗?

最佳答案

你有一个相当“奇怪”的设置:

nginx -> uwsgi http 路由器 -> uwsgi

而不是

nginx -> uwsgi

也许你有一些充分的理由,但在这种情况下,你需要设置之间的超时uwsgi http路由器和uwsgi通过--http-timeout 1800

如果http路由器不是你想要/需要的,你可以让uwsgi使用--http-socket选项来表达http

关于python - 如何跟踪 Python/Django/uwsgi/nginx 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174559/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com