Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Nadzorowany przez Django Celery Elastic Beanstalk brak takiego błędu procesu

Tak, ścieżka jest w porządku:

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

Zauważyłem, że masz zmienną PYTHONPATH ustawioną dwa razy, tak jakbyś nadpisywał właściwością środowiska eb? Po ustawieniu na aplikacji, a następnie na pakiecie aplikacji wellfie.

Twój wpis w dzienniku:

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"

Moje:

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"

Zacznę więc od zbadania tego. Inną rzeczą, o której należy pamiętać, jest to, że jeśli korzystasz z niektórych usług AWS, takich jak Redis, potrzebujesz otwartego połączenia z ustawieniami grupy bezpieczeństwa dla tej usługi, w przeciwnym razie nie będziesz mógł się połączyć.

O czym należy pamiętać:

  1. Jeśli grasz na instancji, pamiętaj o virtualenv. Więc uruchamiasz polecenia takie jak:

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

  2. „ImportError:Żaden moduł o nazwie 'wellfie'” nie może się raz zdarzyć i być zalogowany do celery-beat.log, celery-worker.log”, ponieważ system jest uruchomiony, a proces może nie być jeszcze gotowy.

  3. ImportError('Brak modułu o nazwie xxxx.toi3pr.0001.usw2.cache.amazonaws.com',) wygląda na problem z inicjalizacją Pythona.

Zmodyfikuj plik 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']

Poprawka polegała na zmianie:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Skalowanie Socket.IO do wielu procesów Node.js przy użyciu klastra

  2. RDBTools zostało przejęte przez RedisLabs!

  3. Zestaw Redis vs hasz

  4. Wstawianie listy do innej listy w Redis

  5. implementacja pamięci podręcznej poza procesem przy użyciu Redis w systemie Windows Azure