Redis
 sql >> Database >  >> NoSQL >> Redis

Django Celery Elastic Beanstalk non ha supervisionato tale errore di processo

Sì, il percorso è ok:

command=/opt/python/run/venv/bin/celery worker -A wellfie --loglevel=INFO

Ho notato che hai la tua variabile PYTHONPATH impostata due volte, come se sovrascrivessi con la proprietà dell'ambiente eb? Una volta impostato sull'applicazione e quindi sul pacchetto wellfie dell'applicazione.

La tua voce di registro:

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"

Mio:

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"

Quindi inizierei a indagare su questo. Un'altra cosa da tenere a mente è che se utilizzi alcuni servizi AWS come Redis, hai bisogno di una connessione aperta su di esso con le impostazioni del gruppo di sicurezza per quel servizio, altrimenti non sarai in grado di connetterti.

Cose da tenere a mente:

  1. Se giochi sull'istanza, ricorda virtualenv. Quindi esegui comandi come:

    cd /opt/python/current/app &&source /opt/python/run/venv/bin/activate &&python manage.py

  2. "ImportError:Nessun modulo denominato 'wellfie'" potrebbe verificarsi una volta ed essere registrato in celery-beat.log, celery-worker.log" poiché il sistema si sta avviando e il processo potrebbe non essere ancora pronto.

  3. ImportError('Nessun modulo denominato xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) sembra un problema di inizializzazione di Python.

Modifica il file cartella_root/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']

La correzione doveva cambiare:

supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd 

in

supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd-worker
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd-beat