Супервизор и переменные среды

Я действительно не знаю, как заставить супервизор работать с переменными среды.

Ниже отрывок конфигурации.

[program:htNotificationService]
priority=2
#autostart=true
#autorestart=true
directory=/home/ubuntu/workspace/htFrontEnd/heythat/htsite
command = /usr/bin/python htNotificationService.py -service
stdout_logfile=/var/log/heythat/htNotificationService.log
redirect_stderr=true
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
stopsignal=QUIT

Я попробовал следующее:

environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
environment=PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat,PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat

Когда я запускаю супервизор, я добираюсь

htNotificationService: ERROR (abnormal termination)

Я могу запустить с оболочки путем устанавливания пути Python, но не от супервизора. В журналах я получаю ошибку, которая говорит, что импорт не может быть найден. Ну, это было бы решено, если супервизор будет работать. У меня даже есть путь в/etc/environments?

Почему супервизор не будет работать?

62
задан 16 October 2012 в 00:41

4 ответа

Ссылка на существующий огибающий Вар сделана с % (ENV_VARNAME) s

(см. https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf)

Установка нескольких переменных среды сделана путем разделения их с запятыми

(см. http://supervisord.org/subprocess.html#subprocess-environment )

Попытка:

environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s
95
ответ дан 31 October 2019 в 13:36

В Вашем .conf файле под supervisord блоком можно добавить всю среду key=value пары как таковые

[supervisord]
environment=CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//",FLASK_CONFIG="TESTING"

[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000

, Если Вы не хотите к hardcode переменные, но хотите втянуть его от среды OS, шага 1 на Вашем ударе

Проверка Bash

>> . ~/.bashrc

Перезагрузки env var

>> sudo export CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//"

, Экспорта, если огибающий Вар установлен правильно

>> env

Теперь, изменяет conf файл для чтения - Примечание : предварительно ожидайте свои огибающие переменные с ENV_

[supervisord]
environment=CELERY_BROKER_URL="%(ENV_CELERY_BROKER_URL)s",FLASK_CONFIG="%(ENV_FLASK_CONFIG)s"

[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000
24
ответ дан 31 October 2019 в 13:36

это работает на меня. отметьте вкладки перед каждой строкой:

environment=
    CLOUD_INSTANCE_NAME=media-server-xx-xx-xx-xx,
    CLOUD_APPLICATION=media-server,
    CLOUD_APP_COMPONENT=none,
    CLOUD_ZONE=a,
    CLOUD_REGION=b,
    CLOUD_PRIVATE_IP=none,
    CLOUD_PUBLIC_IP=xx.xx.xx.xx,
    CLOUD_PUBLIC_IPV6=xx.xx.xx.xx.xx.xx,
    CLOUD_PROVIDER=c
16
ответ дан 31 October 2019 в 13:36

При установке супервизора из установщика пакета проверьте, какую версию Супервизора Вы используете. По состоянию на август 2016 Вы доберетесь 3.0b2 . Если это верно, Вам будет нужна более новая версия супервизора. Можно получить его путем установки супервизора вручную или при помощи зернышка Python. Удостоверьтесь, что все зависимости встречены, наряду с новомодной установкой так, чтобы работы supervisord как услуга и запустились на начальной загрузке системы.

5
ответ дан 31 October 2019 в 13:36

Другие вопросы по тегам:

Похожие вопросы: