Ошибка тайм-аута Nginx 504 в контейнере Docker, выполняющем Django и загружающем модель Scikit-learn в память - PullRequest
0 голосов
/ 03 сентября 2018

Я создаю веб-приложение с Django, которое использует предварительно обученную модель scikit-learn для обработки данных, которые пользователь вводит через веб-форму. Во время разработки я могу загрузить модель в память, выполнив следующую команду в urls.py

modelRF = joblib.load('model.pkl')

Однако, когда я пытаюсь развернуть приложение в контейнере Docker, я получаю 504 Gateway Timeout Error. Я попытался увеличить ограничения времени ожидания в файле 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 голосов
/ 09 января 2019

Добавить uwsgi_read_timeout директива внутри фигурных скобок местоположения django, например:

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