3

我在 Apache 和 Google Compute Engine 机器上使用 celery 作为守护进程与 Celeryd 和 Django。

我的 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,问题就解决了。任何想法?也许服务启动有问题?

4

1 回答 1

0

HOME通常不会为所有用户定义环境变量。因此,当 Celery 在引导时启动时,该变量不可用。

当您使用 重新启动它时sudo,您的用户环境中的环境变量将由 Celery 进程继承,这解释了它现在工作的原因(尽管HOME将设置为您的主目录)。

你应该换homedir一种方式。请参阅如何在 Python 中获取主目录?用于检索主目录的替代方法。

于 2013-04-23T11:53:00.327 回答