django 加载资源失败:服务器以状态502(坏网关)响应

cxfofazt  于 2023-01-03  发布在  Go
关注(0)|答案(3)|浏览(213)

如何解决502错误?
我相信导致502错误的原因是一个包含大量计算的嵌套循环。在我的本地服务器上,它需要2分钟才能完成这段代码。然而,在公共服务器上,我只是得到了这个502坏网关nginx/1.10.3(Ubuntu)

for j in x:
    if j == 1:
        index_for_multi_array = 0
    else:
        index_for_multi_array = 1

    q = con[j-1] # index 0 and 7 
    q = q * 1e-6
    m = mass[j-1]
    for i in range(1,int(bands[j-1])+1):
        #read parameters
        vc         = float(_1_wnum[index_for_multi_array][i-1])
        S0         = float(_1_int[index_for_multi_array][i-1] )
        gamma_air  = float(_1_abroad[index_for_multi_array][i-1])
        gamma_self = float(_1_sbroad[index_for_multi_array][i-1])
        n          = float(_1_abcoef[index_for_multi_array][i-1] )
        #resonance shape
        alpha_1  = float( (1.0- q) * gamma_air  + q * gamma_self ) * (P/P0) * ((T/T0) ** n)
        fv       = (alpha_1 / math.pi) * np.power((np.true_divide(v,vc)),2) * np.add((np.true_divide(1, np.power(v-vc,2) + alpha_1**2)) , np.true_divide(1,np.power((v+vc),2)+alpha_1**2))
        gv       = np.true_divide(v,vc) * pre_calculation / np.tanh(h*c*vc / (2*k*T)) * fv  
        S        = S0  #line intensity
        sigmav   = gv * S0
        qq       = q * P/R/T*NA
        kv       = P/P0*T0/T*qq*sigmav
        kvt[index_for_multi_array,:] = kvt[index_for_multi_array,:] + kv

内循环的最大迭代次数是209,000外循环的迭代次数是8
我的网站是用django制作的,我也使用numpy(我把它安装在公共服务器上),js,html和css。
主页也运行良好。点击一个按钮,我就会被重定向到另一个页面。那个页面需要一段时间才能加载,因为www.example.com中正在进行大量计算views.py,但中途它因502错误而崩溃。
对于从哪里开始寻找解决此错误的方法,您有什么想法吗?

tzdcorbm

tzdcorbm1#

更新:如果你的代码返回速度不够快,我建议返回没有计算结果的空白页面,让页面对繁重的计算进行 AJAX 调用,这样它就可以异步加载。一旦计算完成,页面就会加载它们的结果:http://api.jquery.com/jquery.ajax/
因此,您要做的是将繁重的计算转移到一个以JSON(https://docs.djangoproject.com/en/2.1/ref/request-response/#django.http.JsonResponse)等格式返回结果的视图中,并在原始页面上设置Javascript以调用该视图,等待JSON返回,然后在返回后将JSON呈现为您希望在页面上显示的任何格式。
另一个选择是串celery :http://docs.celeryproject.org/en/latest/
旧版本:尝试将proxy_pass更改为您的服务器IP,而不是/etc/nginx/sites-available/myproject中的127.0.0.1:8000。还要确保在settings.py中,您的服务器IP位于ALLOWED_HOSTS中。
坏网关通常不是编码问题的结果,而是配置问题。

vof42yt1

vof42yt12#

使用nginx配置指令proxy_read_timeout和proxy_send_timeout使nginx不会过早终止代理连接并返回错误。

omhiaaxx

omhiaaxx3#

通过转到python2.7目录/usr/lib/python2.7/dist-packages/gunicorn并打开配置文件,找到超时函数并将默认超时从30更改为60来解决。
运行命令service gunicorn restart
这将解决超时问题

相关问题