Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Django Celery Elastic Beanstalk não supervisionou esse erro de processo


Sim, o caminho está ok:
command=/opt/python/run/venv/bin/celery worker -A wellfie --loglevel=INFO

Percebi que você tem sua variável PYTHONPATH definida duas vezes, como se fosse substituir com a propriedade de ambiente eb? Uma vez definido no aplicativo e, em seguida, no pacote wellfie do aplicativo.

Sua entrada de 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"

Minhas:
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"

Então, eu começaria investigando isso. Outra coisa a ter em mente é que, se você usar alguns serviços da AWS, como o Redis, precisará de uma conexão aberta com as configurações do grupo de segurança para esse serviço, caso contrário, não poderá se conectar.

Coisas a ter em mente:

  1. Se você joga na instância, lembre-se do virtualenv. Então você executa seus comandos como:

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

  2. "ImportError:Nenhum módulo chamado 'wellfie'" pode ocorrer uma vez e ser registrado em celery-beat.log, celery-worker.log", pois o sistema está iniciando e o processo pode não estar pronto ainda.

  3. ImportError('Nenhum módulo chamado xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) parece um problema de inicialização do python.

Modifique o arquivo 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']

A correção foi mudar:
supervisorctl -c /opt/python/etc/supervisord.conf restart celeryd 

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