之前接口测试新增了根据文件(excel)来执行用例,excel中有多少行数据则执行多少次用例,今天执行100条数据时接口响应504,前端响应网络错误,检查服务器资源时看到后端django函数实际还是在运行的,这通常意味着你的请求已经成功发送到了服务器,但是服务器在尝试处理请求时未能在规定的时间内从另一个服务器(如上游服务器、数据库服务器或外部API)获得响应。这个错误通常不是由客户端(如使用Axios的你的应用程序)直接引起的,而是由服务器端的环境或配置问题导致的。
检查服务器配置,特别是与超时设置相关的配置(如Nginx的proxy_read_timeout
)
这里我设置了nginx的三个超时代理指令:
proxy_connect_timeout
:设置 Nginx 与上游服务器建立连接的超时时间。proxy_read_timeout
:设置 Nginx 从上游服务器读取响应的超时时间。proxy_send_timeout
:设置 Nginx 向上游服务器发送请求的超时时间。
-
proxy_connect_timeout
:这个指令设置了Nginx尝试与上游服务器建立连接的超时时间。如果上游服务器响应很快且网络状况良好,这个值可以设置得较短,比如10秒或更少。但如果上游服务器有时需要较长时间来启动或响应,可能需要增加这个值。 -
proxy_read_timeout
:这个指令设置了Nginx从上游服务器读取响应的超时时间。这是导致504错误的最常见原因,因此可能需要仔细调整这个值。如果上游服务器通常需要几秒钟来处理请求并返回响应,那么您可以将这个值设置为比实际处理时间稍长一些,比如30秒到2分钟。但是,如果上游服务器有时需要更长时间来处理请求(例如,因为进行了复杂的计算或查询了大型数据库),则您可能需要进一步增加这个值。 -
proxy_send_timeout
:这个指令设置了Nginx向上游服务器发送请求的超时时间。通常,这个值不需要设置得太高,因为发送请求通常是一个快速的过程。但是,如果请求体非常大,或者网络状况不佳,您可能需要增加这个值。
于是我在nginx的docker容器中/etc/nginx/nginx.conf路径下设置nginx.conf文件新增以上三个指令:
由于我的文件中存在大量数据,而且后置脚本中涉及到数据库的查询、解密等操作,我这里设置proxy_read_timeout
为10分钟。
设置完成后通过nginx -s reload 重启nginx,发送请求,响应成功返回: