无法加载资源:服务器响应状态为 502(网关错误)

问题描述 投票:0回答:3

如何解决 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。

主页也运行良好。单击按钮后,我会重定向到另一个页面。该页面需要一段时间才能加载,因为views.py 中进行了大量计算,但中途崩溃并出现 502 错误。

有什么想法可以从哪里开始解决这个错误吗?

django web server digital-ocean
3个回答
0
投票

更新:如果您的代码返回速度不够快,我建议返回不返回任何计算的空白页面,并让该页面对繁重的计算进行 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,而不是
127.0.0.1:8000
中的
/etc/nginx/sites-available/myproject
。另请确保在您的
settings.py
中,您的服务器 IP 位于
ALLOWED_HOSTS
中。

不良网关通常不是编码问题造成的。它们通常是配置问题。


0
投票

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


0
投票

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

运行命令服务gunicorn restart

这应该可以解决超时问题

© www.soinside.com 2019 - 2024. All rights reserved.