当前位置:  开发笔记 > 编程语言 > 正文

为什么启动芹菜时未检测到我的环境变量?

如何解决《为什么启动芹菜时未检测到我的环境变量?》经验,为你挑选了1个好方法。

我在apache和mod_wsgi服务的centos上运行django.我按照说明设置芹菜作为守护进程运行.

我把这个初始化脚本https://github.com/celery/celery/blob/3.1/extra/generic-init.d/celeryd放入/etc/init.d/celeryd

并在中设置配置

/etc/default/celeryd 

我在我的django settings.py文件中使用环境变量,因此我可以在开发和生产环境中使用不同的配置.我知道这些环境变量设置正确,因为应用程序一直在工作.我认为芹菜只是没有将变量传递给它或其他东西.

我通过输入env命令检查.变量显得很好.

要开始,我只是这样做:

service celeryd start

它尝试启动,但抛出一个错误,说我没有设置我的环境变量.

我写了一个函数来获取环境变量.这就是引发错误的原因.

def get_env_variable(var_name):
    try:
        return os.environ[var_name]
    except KeyError:
        error_msg = "Set the %s environment variable" % var_name
        raise ImproperlyConfigured(error_msg)

抛出错误的唯一方法是未正确设置环境变量.

有谁知道为什么芹菜没有检测到我设定的环境变量?



1> Spencer Cool..:

我刚刚发现我不仅需要在系统中设置我的环境变量,而且还必须将这些变量传递给/ etc/default/celleryd脚本.

我只是把我的变量放在/ etc/default/celleryd的底部:

export MY_SPECIAL_VARIABLE = "my production variable"
export MY_OTHERSPECIAL_VARIABLE = "my other production variable"

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有