我使用芹菜作为Celeryd和Django的守护进程,而不是Apache和Google Compute Engine机器。
我的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'
但是如果我执行sudo /etc/init.d/celeryd restart,问题就解决了。任何的想法?也许服务启动有些问题?
答案 0 :(得分:0)
通常不会为所有用户定义HOME
环境变量。因此,当Celery在启动时启动时,该变量不可用。
当您使用sudo
重新启动它时,Celery流程会继承您的用户环境中的环境变量,这解释了它现在有效的原因(尽管HOME
将设置为您的< / strong> homedir)。
你应该以不同的方式获得homedir
。有关检索主目录的替代方法,请参阅How to get the home directory in Python?。