我在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)
抛出错误的唯一方法是未正确设置环境变量.
有谁知道为什么芹菜没有检测到我设定的环境变量?
我刚刚发现我不仅需要在系统中设置我的环境变量,而且还必须将这些变量传递给/ etc/default/celleryd脚本.
我只是把我的变量放在/ etc/default/celleryd的底部:
export MY_SPECIAL_VARIABLE = "my production variable" export MY_OTHERSPECIAL_VARIABLE = "my other production variable"