2017-02-03 11 views
0

Я пытаюсь запустить tornado api с сервисом супервизора.supervisorctl не может перезагрузить виртуальную среду активировать файл

Это конфигурация, которую я написал для запуска моего приложения с помощью супервизора:

[program:tornado_main] 
command=/home/ubuntu/env/bin/python /home/ubuntu/<repo>/__main__.py 
directory=/home/ubuntu/<repo> 
user=ubuntu 
stdout_logfile = /var/log/supervisor/tornado_main.log 
stderr_logfile = /var/log/supervisor/tornado_main_err.log 
environment=PATH=/home/ubuntu/env/bin,PYTHONPATH=/home/ubuntu/<repo>,VIRTUAL_ENV=/home/ubuntu/env/ 

Это отлично работает.

В коде есть несколько частей, которые зависят от некоторых переменных среды, которые записаны в файле активации виртуальной среды.

Теперь проблема заключается в том, что супервизор не может прочитать эти переменные среды и выдает ошибку. Когда я запускаю его вручную, он работает нормально.

Что мне не хватает?

ответ

1

При запуске env/bin/python, вы используете virtualenv без , возбуждающий it. Этого достаточно, но если вы действительно зависите от активированного virtualenv (например, потому что вы хотите запускать подпроцессы в этой среде или использовать другие переменные среды), вам необходимо активировать его в конфигурации вашего супервизора (и если вы сделаете это , вы, вероятно, хотите, чтобы удалить environment линию, которая дублирует то, что activate будет делать):

command=bash -c 'source /home/ubuntu/env/bin/activate && python /home/ubuntu/<repo>/__main__.py' 
+0

Спасибо .. Я попробую. Хотя я придумал грязный взлом, указав все мои переменные env в строке «окружение». –

 Смежные вопросы

  • Нет связанных вопросов^_^