【问题标题】:Celery as daemon task KeyError on os.environ芹菜作为 os.environ 上的守护程序任务 KeyError
【发布时间】:2013-04-23 09:53:44
【问题描述】:

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

【问题讨论】:

    标签: django celery


    【解决方案1】:

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

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

    您应该以不同的方式获取homedir。请参阅How to get the home directory in Python? 以获取检索主目录的替代方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2016-03-10
      • 2020-03-04
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多