运行Django并将Scikit学习模型加载到内存中的Docker容器中的Nginx 504超时错误

时间:2018-09-03 15:44:07

标签: django docker nginx scikit-learn supervisor

我正在使用Django构建一个Web应用程序,该应用程序使用预先训练的scikit-learn模型来处理用户通过Web表单输入的数据。在开发期间,我可以通过在urls.py

中运行以下命令将模型加载到内存中
modelRF = joblib.load('model.pkl')

但是,当我尝试在Docker容器中部署应用程序时,收到504网关超时错误。我尝试增加nginx.conf文件中的超时限制,但没有成功。我想知道分配给容器的内存量是否也可能是一个问题。

我不确定问题是否与Docker有关,还是与在部署(而非开发)时将模型加载到内存中的方式有​​关。我正在将docker-compose与nginx,supervisor和uwsgi结合使用。

我的nginx.conf文件看起来像这样:

upstream django {
    server unix:///tmp/uwsgi.sock; # for a file socket
}

server {
    listen      80 default_server;

    server_name .example.com;
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   

    # Django media
    location /media  {
        alias /home/docker/code/media;
    }

    location /static {
       alias /home/docker/code/static;
    }

    location / {
        uwsgi_pass  django;
        include /home/docker/code/uwsgi_params; 
    }
}

干杯!

1 个答案:

答案 0 :(得分:0)

在Django位置花括号内添加 uwsgi_read_timeout 指令,如下所示:

location / {
    uwsgi_pass  django;
    include /home/docker/code/uwsgi_params;
    uwsgi_read_timeout 3000;
}