tôi đặt một biến môi trường trong supervisord:Python chính Lỗi khi thiết biến môi trường trong supervisord
[program:worker]
directory = /srv/app/
command=celery -A tasks worker -Q default -l info -n default_worker.%%h
environment=BROKER="amqp://admin:[email protected]:5672//"
Trong celeryconfig.py của tôi sau đó tôi cố gắng đọc rằng biến như thế này.
BROKER = os.environ['BROKER']
Nhưng tôi vẫn nhận được lỗi chính bên dưới, tại sao?
File "/usr/local/lib/python2.7/dist-packages/celery/loaders/base.py", line 106, in import_module
return importlib.import_module(module, package=package)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/srv/app/celeryconfig.py", line 6, in <module>
BROKER = os.environ['BROKER']
File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'BROKER
Có một bãi chứa tập tin của envs như đề xuất trong các ý kiến:
{
'SUPERVISOR_GROUP_NAME': 'celery_default_worker',
'TERM': 'linux',
'SUPERVISOR_SERVER_URL': 'unix: ///var/run/supervisor.sock',
'UPSTART_INSTANCE': '',
'RUNLEVEL': '2',
'UPSTART_EVENTS': 'runlevel',
'PREVLEVEL': 'N',
'SUPERVISOR_PROCESS_NAME': 'celery_default_worker',
'UPSTART_JOB': 'rc',
'PWD': '/',
'SUPERVISOR_ENABLED': '1',
'runlevel': '2',
'PATH': '/usr/local/sbin: /usr/local/bin: /sbin: /bin: /usr/sbin: /usr/bin',
'previous': 'N'
}
Lạ - điều đó có vẻ chính xác ở lần vượt qua đầu tiên. Có thể nó sẽ giúp gỡ lỗi của bạn để thêm 'với mở ("/tmp/celery-environment.txt "," w ") như f: f.write (repr (os.environ))' vào 'celeryconfig.py' của bạn, sau đó kiểm tra tệp '/ tmp/celery-environment.txt' để xem * là gì * trong môi trường của bạn? –
Xác nhận lệnh thực hiện. ví dụ: kiểm tra xem biến môi trường BROKER có được đặt đầu tiên trong 'supervisord:' hoặc BROKER được đọc đầu tiên trong 'CeleryConfig.py' hay không. Nếu 'CeleryConfig.py' được đọc trước, thì không có sự tồn tại của BROKER như BROKER được đặt trong' supervisord: ' – Vinkal
Bạn có nói' supervisord' nhận các thay đổi hay khởi động lại 'supervisord'? –