2013-04-23 2 views
3

Я использую сельдерей в качестве демона с Celeryd и Django над Apache и машиной Google Compute Engine.Сельдерей как задача демона KeyError на os.environ

Мой Celeryd по умолчанию конфиг с:

CELERYD_USER="myuser-notroot" 
CELERYD_GROUP="developers" 

И я думаю, что все разрешения хорошо посаженные (я полагаю). При загрузке моей системы, все соединяется хорошо, но когда я запускаю задачу, которая делает:

import os 
homedir = os.environ['HOME'] 

Я получаю на журнал:

homedir = os.environ['HOME'] 
    File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ 
    raise KeyError(key) 
    KeyError: 'HOME' 

Но если я Судо /etc/init.d/ celeryd restart, проблема решена. Есть идеи? Может быть, некоторые проблемы с запуском службы?

ответ

0

Переменная окружения HOME обычно не определена для всех пользователей. Следовательно, когда сельдерей запускается при загрузке, переменная недоступна.

При перезапуске его с помощью sudo, переменные окружений из среды пользователя, наследуется процесс сельдерея, который объясняет, почему он сейчас работает (хотя HOME будет установлен вашей домашнего каталога).

Вы должны получить homedir по-другому. См. How to get the home directory in Python? для альтернативного метода для извлечения домашнего каталога.