Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Django Celery Elastic Beanstalk überwacht keinen solchen Prozessfehler

Ja, der Pfad ist ok:

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

Mir ist aufgefallen, dass Sie Ihre PYTHONPATH-Variable zweimal gesetzt haben, als würden Sie sie mit der eb-Umgebungseigenschaft überschreiben? Einmal auf Anwendung eingestellt und dann auf Anwendung Wellfie-Paket.

Ihr Protokolleintrag:

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"

Mein:

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"

Also würde ich damit beginnen, das zu untersuchen. Eine andere Sache, die Sie beachten sollten, ist, dass Sie, wenn Sie einige AWS-Dienste wie Redis verwenden, eine offene Verbindung mit Sicherheitsgruppeneinstellungen für diesen Dienst benötigen, da Sie sonst keine Verbindung herstellen können.

Dinge, die Sie beachten sollten:

  1. Wenn Sie auf der Instanz spielen, denken Sie an virtualenv. Also führen Sie Ihre Befehle aus wie:

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

  2. "ImportError:No module named 'wellfie'" kann einmal auftreten und in celery-beat.log, celery-worker.log eingeloggt werden, da das System startet und der Prozess möglicherweise noch nicht bereit ist.

  3. ImportError('No module named xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) sieht nach einem Problem mit der Python-Initialisierung aus.

Ändern Sie die Datei 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']

Fix war zu ändern:

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