python - environment variables not available to supervisor-run celery workers -


i have been having trouble reading environment variables in celery tasks when celery run via supervisor

in /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" 

in myapp/myfile.py ...

... print 'the system config is', os.getenv('flask_config') dburi = app_config.config[os.getenv('flask_config')].database_uri 

in celeryworker.log ...

the system config none 

in 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 

since supervisor doesn't start shell, following unnecessary, here completeness..

in /etc/profile.d/my_app.sh

export flask_config='testing' 

in .conf file under supervisord block, can add environment key=value pairs such

[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 

if dont want hardcode variables want pull in os environment, step 1 on bash

export env var

>> sudo export celery_broker_url="amqp://guest:guest@127.0.0.1:5672//" 

reload bash

>> . ~/.bashrc 

check if env vars set properly

>> env 

now modify conf file read - note: prepend env variables 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 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -