sql >> Databáze >  >> NoSQL >> Redis

Django Celery Elastic Beanstalk dohlížel na žádnou takovou chybu procesu

Ano, cesta je v pořádku:

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

Všiml jsem si, že máte proměnnou PYTHONPATH nastavenou dvakrát, jako byste přepsali vlastnost prostředí eb? Jakmile je nastaven na aplikaci a poté na balíček wellfie aplikace.

Záznam vašeho protokolu:

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"

Můj:

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"

Takže bych začal tím, že to prozkoumám. Další věc, kterou je třeba mít na paměti, je, že pokud používáte některé služby AWS, jako je Redis, potřebujete na nich otevřené připojení s nastavením skupiny zabezpečení pro tuto službu, jinak se nebudete moci připojit.

Věci, které je třeba mít na paměti:

  1. Pokud hrajete na instanci, pamatujte na virtualenv. Spustíte tedy příkazy jako:

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

  2. "ImportError:Žádný modul s názvem 'wellfie'" může nastat jednou a být přihlášen do celery-beat.log, celery-worker.log", protože systém se spouští a proces ještě nemusí být připraven.

  3. ImportError('Žádný modul s názvem xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) vypadá jako problém s inicializací pythonu.

Upravit soubor 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']

Oprava se měla změnit:

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



  1. Typovaný klient Redis

  2. Jak použít $elemMatch na projekci agregátu?

  3. Proč moje MongooseJS ObjectId neprojde testem rovnosti?

  4. Jak škálovat Node.js WebSocket Redis Server?