Tak, ścieżka jest w porządku:
command=/opt/python/run/venv/bin/celery worker -A wellfie --loglevel=INFO
Zauważyłem, że masz zmienną PYTHONPATH ustawioną dwa razy, tak jakbyś nadpisywał właściwością środowiska eb? Po ustawieniu na aplikacji, a następnie na pakiecie aplikacji wellfie.
Twój wpis w dzienniku:
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"
Moje:
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"
Zacznę więc od zbadania tego. Inną rzeczą, o której należy pamiętać, jest to, że jeśli korzystasz z niektórych usług AWS, takich jak Redis, potrzebujesz otwartego połączenia z ustawieniami grupy bezpieczeństwa dla tej usługi, w przeciwnym razie nie będziesz mógł się połączyć.
O czym należy pamiętać:
-
Jeśli grasz na instancji, pamiętaj o virtualenv. Więc uruchamiasz polecenia takie jak:
cd /opt/python/current/app &&source /opt/python/run/venv/bin/activate &&python manage.py
-
„ImportError:Żaden moduł o nazwie 'wellfie'” nie może się raz zdarzyć i być zalogowany do celery-beat.log, celery-worker.log”, ponieważ system jest uruchomiony, a proces może nie być jeszcze gotowy.
-
ImportError('Brak modułu o nazwie xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) wygląda na problem z inicjalizacją Pythona.
Zmodyfikuj plik 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']
Poprawka polegała na zmianie:
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd
do
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd-worker
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd-beat