Redis
 sql >> Base de données >  >> NoSQL >> Redis

Django Celery Elastic Beanstalk n'a pas supervisé une telle erreur de processus

Oui, le chemin est correct :

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

J'ai remarqué que votre variable PYTHONPATH est définie deux fois, comme si vous écrasiez avec la propriété d'environnement eb ? Une fois qu'il est défini sur l'application, puis sur le package wellfie de l'application.

Votre entrée de journal :

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"

Mon :

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"

Je commencerais donc par enquêter là-dessus. Une autre chose à garder à l'esprit est que si vous utilisez certains services AWS comme Redis, vous avez besoin d'une connexion ouverte avec les paramètres du groupe de sécurité pour ce service, sinon vous ne pourrez pas vous connecter.

Choses à garder à l'esprit :

  1. Si vous jouez sur l'instance, souvenez-vous de virtualenv. Donc, vous exécutez vos commandes comme :

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

  2. "ImportError:No module named 'wellfie'" peut se produire une fois et être connecté à celery-beat.log, celery-worker.log" puisque le système démarre et que le processus n'est peut-être pas encore prêt.

  3. ImportError('Aucun module nommé xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) ressemble à un problème d'initialisation Python.

Modifier le fichier 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']

Le correctif devait changer :

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

dans

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