Супервизор не может загрузить Cuda libs, PATH НЕ ПРОПУСТИТ, работает без супервизора - PullRequest
0 голосов
/ 03 мая 2018

У меня есть приложение на Python с Flask, tenorflow-gpu ..., которое запускается без проблем при запуске:

gunicorn server:app -b localhost:8000

но когда я запускаю его с супервизором, выдает ошибку

ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

Я не использую virtualenv.

вот мой конфиг супервизора

[program:appserver]
command = gunicorn server:app -b localhost:8000
directory = /storage/appserver
user = root
stdout_logfile = /home/deploy/appserver/logs/gunicorn/gunicorn_stdout.log
stderr_logfile = /home/deploy/appserver/logs/gunicorn/gunicorn_stderr.log
redirect_stderr = True

Что я делаю не так?

Если приложение запускается непосредственно из командной строки, почему супервизор не может его запустить?

У меня есть переменные env в bashrc, как я уже сказал, это работает, если я запускаю из командной строки ...

export PATH=/usr/local/cuda-9.0/bin/${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64/


root@xxxxx:/home/xxxxx# echo $PATH
/usr/local/cuda-9.0/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@xxxxxx:/home/xxxxx# echo $LD_LIBRARY_PATH
/usr/local/cuda-9.0/lib64/

1 Ответ

0 голосов
/ 26 октября 2018

Supervisor не загружает переменные окружения, это не зависит от bash, поэтому вы должны загружать переменные окружения непосредственно в конфигурации супервизора.

Вот моя конфигурация в качестве примера:

[program:hoot_api_ml]

user           = hoot
environment    = LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
directory      = /home/hoot/backend/hoot/ml
command        = gunicorn3 -c ../../conf/api_ml/gunicorn.py api:APP

autostart      = true
autorestart    = true

stderr_logfile = /var/log/hoot/api_ml_supervisor.err
stdout_logfile = /var/log/hoot/api_ml_supervisor.log

stopsignal     = INT
...