2012-05-18 1 views
3

http://docs.dotcloud.com/guides/daemons/ состояния:dotcloud supervisord.conf файл спецификации среды

Configuring The Environment 
You can easily modify the environment of execution of your daemon with the “directory” and “environment” directives to change the directory where the command is executed and to define additional environment variable. For example: 

[program:daemonname] 
command = php my_daemon.php 
directory = /home/dotcloud/current/ 
environment = QUEUE=*, VERBOSE=TRUE 

Однако я нахожу мой PYTHONPATH переменная окружения не установлена:

dotcloud.yml:

www: 
    type: python 
db: 
    type: postgresql 
worker: 
    type: python-worker 

supervisord.conf:

[program:apnsd] 
command=/home/dotcloud/current/printenv.py 
environment=PYTHONPATH=/home/dotcloud/current/apnsd/ 

printenv.py

#! /home/dotcloud/env/bin/python 
import os 
print "ENVIRONMENT" 
print os.environ 

журналы:

ENVIRONMENT 
    {'SUPERVISOR_ENABLED': '1', 'SUPERVISOR_SERVER_URL': 'unix:///var/dotcloud/super 
    visor.sock', 'VERBOSE': 'no', 'UPSTART_INSTANCE': '', 'PYTHONPATH': '/', 'PREVLE 
    VEL': 'N', 'UPSTART_EVENTS': 'runlevel', '/': '/', 'SUPERVISOR_PROCESS_NAME': 'a 
    pnsd', 'UPSTART_JOB': 'rc', 'PWD': '/', 'SUPERVISOR_GROUP_NAME': 'apnsd', 'RUNLE 
    VEL': '2', 'PATH': '/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
    ', 'runlevel': '2', 'previous': 'N'} 

Не показывать измененную переменную питона!

ответ

3

В Supervisor есть ошибка; некоторые переменные (например, содержащие /) должны быть указаны.

В этом случае вам необходимо:

[program:apnsd] 
command=/home/dotcloud/current/printenv.py 
environment= PYTHONPATH="/home/dotcloud/current/apnsd/" 

(Пространство в = PYTHONPATH не является обязательным, это просто сделать файл немного более читаемым, кавычки вокруг стоимости PYTHONPATH, однако, не требуется!)

Я обновлю документацию dotCloud, чтобы упомянуть об этой проблеме.

+1

Спасибо. Я также обнаружил, что если вы укажете переменную каталога, то Supervisor выйдет с ошибкой ENOENT: не удалось chdir в «/ home/dotcloud/current/apnsd»: ENOENT. Таким образом, это может быть связано также. Теперь есть другая проблема, но это тема для другого сообщения. – Taras