Ya, jalannya oke:
command=/opt/python/run/venv/bin/celery worker -A wellfie --loglevel=INFO
Saya perhatikan bahwa Anda memiliki variabel PYTHONPATH yang disetel dua kali, seperti yang akan Anda timpa dengan properti lingkungan eb? Setelah diatur pada aplikasi dan kemudian pada paket aplikasi wellfie.
Entri log Anda:
environment=
PYTHONPATH="/opt/python/current/app/:",
PATH="/opt/python/run/venv/bin/:%ENV_PATH)s",
RDS_PORT="5432",
PYTHONPATH="/opt/python/current/app/wellfie:",
REDIS_URL="bbbbb.bbbbb.0001.usw2.cache.amazonaws.com:6379",
RDS_DB_NAME="bbbdb",
DJANGO_SETTINGS_MODULE="wellfie.settings",
RDS_USERNAME="aaaa",
RDS_PASSWORD="bbbb",
RDS_HOSTNAME="bbbbb.bbbbb.us-west-2.rds.amazonaws.com"
Saya:
environment=
PYTHONPATH="/opt/python/current/app/:",
PATH="/opt/python/run/venv/bin/:%(ENV_PATH)s",
WEBSERVER="APACHE",
CNAME="xxxxx-prod-env",
PYCURL_SSL_LIBRARY="nss",
APP_ENV="prod"
Jadi saya akan mulai menyelidikinya. Hal lain yang perlu diingat adalah jika Anda menggunakan beberapa layanan AWS seperti Redis, Anda memerlukan koneksi terbuka dengan pengaturan grup keamanan untuk layanan itu, jika tidak, Anda tidak akan dapat terhubung.
Hal-hal yang perlu diperhatikan:
-
Jika Anda bermain di instance, ingat tentang virtualenv. Jadi Anda menjalankan perintah Anda seperti:
cd /opt/python/current/app &&source /opt/python/run/venv/bin/activate &&python manage.py
-
"ImportError:Tidak ada modul bernama 'wellfie'" yang mungkin terjadi satu kali, dan masuk ke celery-beat.log, celery-worker.log" karena sistem dimulai dan proses mungkin belum siap.
-
ImportError('Tidak ada modul bernama xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) sepertinya masalah inisialisasi python.
Ubah file root_folder/django_app/__init__.py :
from __future__ import absolute_import, unicode_literals
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from django_app.celery import app as celery_app
__all__ = ['celery_app']
Perbaikan adalah mengubah:
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd
ke dalam
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd-worker
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd-beat