请求超时到底由谁负责?gunicorn 的 --timeout 是不是请求超时?nginx 超时了后端还在跑吗?Flask 自己怎么限时?这篇用真实的 gunicorn 与 nginx 把每一层超时的行为量出来。
sync worker 客户端:500,用时 2045 ms,'<html> <head> <title>Internal Server Error</title> <' | 服务端日志有 WORKER TIMEOUT:True gthread worker 客户端:200,用时 5018 ms,'slow done' | 服务端日志有 WORKER TIMEOUT:False
上一篇:后台线程与 Application Context;下一篇:长轮询。
客户端:504,用时 2013 ms,'<html>\r <head><title>504 Gateway Time-out</title></head>\r <body>\r <center><h1>50' 4 秒之后查看服务端:慢请求是否仍然跑完了: True (客户端早就拿到 504,工作还是做完了)
nginx 是自己起的实例(自签证书),上游是 gthread 的 gunicorn。
/deadline?limit=1 → 504,用时 1074 ms,'{"error":"took too long","steps":10}'
/deadline?limit=20(够用)→ 200,用时 5316 ms