Python中uWSGI请求超时

56 投票
3 回答
63954 浏览
提问于 2025-04-18 09:11

我在尝试为uWSGI中的请求设置超时时间,但不太确定该怎么设置。这里似乎有很多超时选项(比如socket、接口等等),而且不太清楚应该配置哪个设置,或者在哪里设置。

我想要的效果是延长REST应用程序中请求资源层所需的时间。

3 个回答

-2

对我来说,解决办法是把这行代码注释掉:#master = true,然后加上这一行:lazy-apps = true

这些内容需要放在uwsgi.ini这个文件里。

24

设置 http-timeout 对我来说有效。我使用的是 http = :8080,所以我猜如果你用的是文件系统的套接字,那你就得用 socket-timeout

92

你可能在找harakiri这个参数——如果请求的处理时间超过了设定的harakiri时间(以秒为单位),那么这个请求就会被丢弃,同时对应的工作进程也会被重启。

对于独立的uwsgi(ini配置):

[uwsgi]
http = 0.0.0.0:80
harakiri = 30
...

如果在uwsgi之前有nginx作为代理,你也需要增加超时时间:

  location / {
    proxy_pass http://my_uwsgi_upstream;
    proxy_read_timeout 30s;
    proxy_send_timeout 30s;
  }

如果你出于某种奇怪的原因想要超过60秒的超时时间,你可以考虑使用uwsgi协议进行通信。配置方式和nginx网站的设置非常相似:

location / {
    uwsgi_read_timeout 120s;
    uwsgi_send_timeout 120s;
    uwsgi_pass  my_upstream;
    include     uwsgi_params;
}

uwsgi:

[uwsgi]
socket = 0.0.0.0:80
protocol = uwsgi
harakiri = 120
...

撰写回答