,我在读取某些芹菜任务中的环境变量时遇到问题
在/etc/supervisord.conf
...
...
[program:celery]
...
command = /home/myuser/mydevelopment/git/ers_data_app/env/bin/celery worker -A webapp.celery --loglevel=info
stdout_logfile=/home/webdev/logs/celeryworker.log
stderr_logfile=/home/myuser/logs/celeryworkererr.log
environment=FLASK_CONFIG="testing"
在myapp/myfile.py
...
...
print 'the system config is', os.getenv('FLASK_CONFIG')
dburi = app_config.config[os.getenv('FLASK_CONFIG')].DATABASE_URI
在celeryworker.log
...
the system config is None
在celeryworkererr.log
...
...
File "/home/webdev/mydevelopment/git/ers_data_app/webapp/dbmodels/database.py", line 16, in <module>
dburi = app_config.config[os.getenv('FLASK_CONFIG')].DATABASE_URI
KeyError: None
由于supervisor
不启动 shell,因此以下内容是不必要的,但为了完整起见,它在这里。
在/etc/profile.d/my_app.sh
export FLASK_CONFIG='testing'
在 .conf 文件中的 主管块下,您可以添加所有环境键=值对,如下所示
[supervisord]
environment=CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//",FLASK_CONFIG="TESTING"
[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000
如果您不想对变量进行硬编码,但想从操作系统环境中将其拉入,请在 bash 上执行第 1 步
导出环境变量
>> sudo export CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//"
重装猛击
>> . ~/.bashrc
检查环境变量是否设置正确
>> env
现在修改 conf 文件以读取 - 注意:在 env 变量前面加上 ENV_
[supervisord]
environment=CELERY_BROKER_URL="%(ENV_CELERY_BROKER_URL)s",FLASK_CONFIG="%(ENV_FLASK_CONFIG)s"
[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000