django单独部署uwsgi请求超时问题
django单独部署uwsgi请求超时问题
当你需要限制请求时长,或者需要允许较长时间的请求时配置
我这次遇到的问题就是django项目单独运行没有问题,但是部署到uwsgi服务器中后出现一个ajax请求时间比较长(大于uwsgi默认的60秒),所以1min后抛出了POST net::ERR_EMPTY_RESPONSE,本来以为ajax超时,最后确定是uwsgi默认设置60秒超时。
本人使用的uwsgi2.0.19.1,python3.7.7,django3.0.8
harakiri:
harakiri=60 单位秒
前端向后端发送一个请求,等待服务器响应,超过设置时间服务器就会强行终止本次请求,前端的接受到的响应就为空,就是上面提到的net::ERR异常控制台network中状态为failed。
http-timeout:
http-timeout=60 单位秒
一般情况下,我们的uwsgi都是配合nginx使用的,使用的都是socket-timeout。但是本次我单独使用uwsgi所以使用http-timeout。
区别说就是:uwsgi单独使用就用http, 配合nginx就用socket。
解释下这两个时间的意义:
举个例子:
前端发起请求后,服务器需要3分钟之后才能给前端响应,但是http-timeout设置了60秒,所以60秒后前后就会断开连接,但是服务器还会继续讲任务执行完毕,但是执行完后无法将结果返回给前端。这就是我这次遇到的问题,前端超时报错,但是后端程序会继续执行。
解决方法
本人采用的是uwsgi.ini方式配置
http-timeout=6000设置大于你请求时间