2013-04-23 103 views
3

我在Celeryd和Django上通過Apache和Google Compute Engine機器使用celery作爲後臺進程。作爲守護進程任務的芹菜os.environ上的KeyError

我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/中芹菜重啓,問題解決了。任何想法?服務啓動可能存在一些問題?

回答

0

HOME環境變量通常沒有爲所有用戶定義。因此,當Celery在啓動時啓動時,該變量不可用。

當你重新啓動它使用sudo,從您的用戶環境的環境變量是由芹菜過程,這解釋了爲什麼現在的工作(雖然HOME將被設置爲主目錄)繼承。

你應該得到homedir一個不同的方式。有關檢索主目錄的其他方法,請參見How to get the home directory in Python?