尽管设置了gunicorn和nginx,应用仍然在30秒后超时

时间:2019-08-13 15:12:28

标签: docker nginx timeout gunicorn

我有一个使用Flask,Gunicorn和nginx的API,该API可以正常工作,直到请求需要30秒钟以上才能回答。在这种情况下,API只会超时并返回504错误代码。

此API必须至少能够让查询运行180秒,这是到目前为止配置的方式:

Dockerfile:

FROM python:3.7

...

CMD ["gunicorn", "--reload", "--log-file", "/logs/gunicorn.log", "--workers", "2", "--timeout", "180", "application:app", "-b", ":4600"]

EXPOSE 4600

nginx.conf:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    client_max_body_size 10m;

    server {
        listen          80;
        server_name     myapp.com;

        keepalive_timeout  180;

        access_log      /var/log/nginx/access.log;
        error_log       /var/log/nginx/error.log;
        root            /app;

        gzip            on;
        gzip_types      text/css application/javascript text/javascript application/json application/vnd.api+json;

        location /api {
            expires             0;
            proxy_pass          http://api:4600/;
        }
    }
}

如您所见,gunicorn配置为在180s和nginx之后也超时(通过keepalive_timeout设置)。我还看到了Nginx的其他一些超时设置,但是文档说它们默认为90s,这与当前激活的30s超时不一致,毫无疑问,它来自那里。

但是,default timeout for gunicorn is 30s可能表明Dockerfile中的timeout设置未正确定义或被忽略。

问题:是否可以解决这些设置,以使API遵循180秒超时行为,而不是当前观察到的30秒超时行为?

0 个答案:

没有答案