Probleme mit Sellerie & Redis Backend
Ich habe ein system eingerichtet, die derzeit mit Sellerie-mit redis
backend tun eine Menge asynchrone Aufgaben wie das versenden von E-Mails,
ziehen soziale Daten, krabbeln,etc. Alles funktioniert Super, aber ich
bin mit der Gruppe herauszufinden, wie das system überwachen (aka die Anzahl
der queue-up-Meldungen). Ich begann, mich durch den Sellerie Quelle aber
Ich dachte, ich würde post meine Fragen hier:
First off, hier sind meine Konfigurationen:
BROKER_BACKEND = "redis"
BROKER_HOST = "localhost"
BROKER_PORT = 6379
BROKER_VHOST = "1"
REDIS_CONNECT_RETRY = True
REDIS_HOST = "localhost"
REDIS_PORT = 6379
REDIS_DB = "0"
CELERY_SEND_EVENTS = True
CELERYD_LOG_LEVEL = 'INFO'
CELERY_RESULT_BACKEND = "redis"
CELERY_TASK_RESULT_EXPIRES = 25
CELERYD_CONCURRENCY = 8
CELERYD_MAX_TASKS_PER_CHILD = 10
CELERY_ALWAYS_EAGER =True
Das erste, was ich versuche zu tun ist, um zu überwachen, wie viele Nachrichten sind in
meine Warteschlange. Ich nehme an, hinter den kulissen, die redis backend ist nur
drücken/knallen aus einer Liste, obwohl ich kann nicht scheinen zu finden, dass in
die code. Also ich mock-up-simulation, wo ich anfangen über 100 Aufgaben und
bin auf der Suche nach Ihnen in redis:
Meine celeryd läuft so:
python manage.py celeryd -c 4 --loglevel=DEBUG -n XXXXX --logfile=log/
Sellerie.melden
Also ich sollte nur 4 gleichzeitige Arbeiter auf einmal .....
Zwei Sache die ich nicht verstehe:
Problem 1:
Nachdem ich in der Warteschlange bis 100 Aufgabe, und suchen Sie Sie auf redis, ich nur
finden Sie unter den folgenden:
$ redis-cli
redis 127.0.0.1:6379> keys *
1) "_kombu.binding.celery"
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> keys *
1) "_kombu.binding.celery"
2) "_kombu.binding.celeryd.pidbox"
redis 127.0.0.1:6379[1]>
Ich kann nicht scheinen zu finden, die Aufgaben zu erhalten, eine Anzahl, wie viele sind in der Warteschlange
(technisch, 96 sollte sein, da ich nur 4 gleichzeitige Aufgaben)
Problem 2
$ ps aux | grep celeryd | cut -c 13-120
41258 0.2 0.2 2526232 9440 s004 S+ 2:27PM 0:07.35 python
manage.py celeryd -c 4 --loglevel=DEBU
41261 0.0 0.1 2458320 2468 s004 S+ 2:27PM 0:00.09 python
manage.py celeryd -c 4 --loglevel=DEBU
38457 0.0 0.8 2559848 34672 s004 T 12:34PM 0:18.59 python
manage.py celeryd -c 4 --loglevel=INFO
38449 0.0 0.9 2517244 36752 s004 T 12:34PM 0:35.72 python
manage.py celeryd -c 4 --loglevel=INFO
38443 0.0 0.2 2524136 6456 s004 T 12:34PM 0:10.15 python
manage.py celeryd -c 4 --loglevel=INFO
84542 0.0 0.0 2460112 4 s000 T 27Jan12 0:00.74 python
manage.py celeryd -c 4 --loglevel=INFO
84536 0.0 0.0 2506728 4 s000 T 27Jan12 0:00.51 python
manage.py celeryd -c 4 --loglevel=INFO
41485 0.0 0.0 2435120 564 s000 S+ 2:54PM 0:00.00 grep
celeryd
41264 0.0 0.1 2458320 2480 s004 S+ 2:27PM 0:00.09 python
manage.py celeryd -c 4 --loglevel=DEBU
41263 0.0 0.1 2458320 2480 s004 S+ 2:27PM 0:00.09 python
manage.py celeryd -c 4 --loglevel=DEBU
41262 0.0 0.1 2458320 2480 s004 S+ 2:27PM 0:00.09 python
manage.py celeryd -c 4 --loglevel=DEBU
Wenn jemand erklären könnte, für mich wäre es toll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Konfiguration
CELERY_ALWAYS_EAGER = True
. Dies bedeutet, dass die Aufgaben, die lokal ausgeführt wird und daher werden Sie nicht sehen, Sie in Redis. Aus den docs: http://celery.readthedocs.org/en/latest/configuration.html#celery-always-eagerNie benutzt Sellerie, aber wenn Sie möchten, um herauszufinden, was es ist eine der Möglichkeiten, darüber zu gehen ist, um die Verbindung zum Redis-Instanz, die mit redis-cli führen Sie dann
monitor
Befehl. Dies wird dump alle Befehle, die ausgeführt wird gegen die Redis-Datenbank. Sie werden in der Lage sein, genau zu sehen, was Los ist.