Próbuję użyć MongoDB jako kolejki wiadomości dla Selera (w aplikacji Django). Obecna wersja rozwojowa Celery (2.2.0rc2) ma pozwolić ci to zrobić, ale nie mogę sprawić, żeby jakikolwiek robotnik odebrał zadania, które tworzę.Używanie MongoDB jako kolejki wiadomości dla Celery
Wersje: seler v2.2.0rc3
MongoDB 1.6.5
pymongo 1,9
django-seler 2.2.0rc2
W moich ustawieniach mam:
CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
# Shouldn't need these - defaults are correct.
"host": "localhost",
"port": 27017,
"database": "celery",
"taskmeta_collection": "messages",
}
BROKER_BACKEND = 'mongodb'
BROKER_HOST = "localhost"
BROKER_PORT = 27017
BROKER_USER = ""
BROKER_PASSWORD = ""
BROKER_VHOST = ""
import djcelery
djcelery.setup_loader()
I utworzono plik test tasks.py w następujący sposób:
from celery.decorators import task
@task()
def add(x, y):
return x + y
Jeśli strzelałem selera w tle, wydaje się, że zaczyna się normalnie. I wtedy otworzyć powłokę Pythona i uruchom następujące:
>>> from myapp.tasks import add
>>> result = add.delay(5,5)
>>> result
<AsyncResult: 7174368d-288b-4abe-a6d7-aeba987fa886>
>>> result.ready()
False
Problem jest to, że nie ma pracowników kiedykolwiek odebrać zadań. Czy brakuje mi jakiegoś ustawienia? Jak wskazać selera do kolejki komunikatów?
Czy aplikacja jest zainstalowana? Czym jest powracający seler w swoich dziennikach? Powszechny powód, że .ready() zwróci Fałsz, gdy tak naprawdę nie powinno, ponieważ zadania nie są rozpoznawane, Celery powie coś w stylu "Nieznane zadanie ignorowane: ...." – Bartek
Czy kiedykolwiek działało to? Mam ten sam problem – Nathan
Niestety nie. – Joe