2011-01-24 17 views
5

MongoDB'yi Kereviz (bir Django uygulamasında) için ileti kuyruğu olarak kullanmaya çalışıyorum. Celery'in mevcut geliştirme sürümü (2.2.0rc2) bunu yapmanıza izin veriyor, ancak oluşturduğum işleri almak için herhangi bir işçiye sahip olamıyorum.MongoDB'yi Kereviz için ileti kuyruğu olarak kullanma

sürümleri: kereviz v2.2.0rc3
mongodb 1.6.5

1,9 pymongo django-kereviz benim ayarlarında 2.2.0rc2

, ben:

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() 

Ben ve aşağıdaki gibi bir test task.py dosyası oluşturuldu:

from celery.decorators import task 

@task() 
def add(x, y): 
    return x + y 

Celeryd'i arka planda ateşlerseniz, normal şekilde başlar. Sonra aşağıdaki bir Python kabuğu açıp çalıştırın:

>>> from myapp.tasks import add 
>>> result = add.delay(5,5) 
>>> result 
<AsyncResult: 7174368d-288b-4abe-a6d7-aeba987fa886> 
>>> result.ready() 
False 

Sorun hiçbir işçi zamankinden görevleri almak olmasıdır. Bir ayarı mı özlüyorum? Kereviği mesaj sırasına nasıl yönlendiririm?

+0

Uygulama yüklü uygulamalarda mı? Herhangi bir şey varsa, günlüklerinde dönen kereviz nedir? Görevleri bilinmediği için .ready() öğesi False döndürmenin ortak bir nedenidir, Kereviz "Bilinmeyen görev yok sayılır: ...." gibi bir şey söyleyecektir. – Bartek

+0

Hiç bu işe yaramadı mı? Ben aynı sorunu yaşıyorum – Nathan

+0

Ne yazık ki yapmadım. – Joe

cevap

0

Kombu'nun, sadece işlevlere ihtiyaç duyduğu için, mongo 1.3+ ile çalıştığını unutmayın. Eğer ubuntu iseniz deponun son sürümü ise 1.2, işe yaramaz.

Belki BROKER_VHOST = "dbname" set o

0

ayarlarınıza bu eklemeyi unutmayın, yoksa işçi görev bulmak ve irade olamaz çalışırsa

Beni haberdar et de var sessizce başarısız ol.

CELERY_IMPORTS = ("namespace",) 
0

Aynı sorunu yaşadım ancak kerevizime geçtiğimde her şey cazibe gibi çalıştı.

2

Aynı sorunu yaşıyorduk. doc tüm görevleri düzgün çalışma değildi

import djcelery 
djcelery.setup_loader() 

arayarak Kereviz kayıtlı olmaları gerektiğini söylüyor olsa. Yani, hala settings.py içinde

ayarını kullandık. Ayrıca, yeni bir görev eklerseniz Kereviz'i yeniden başlattığınızdan emin olun çünkü Celery ilk başladığında görevleri kaydetmelidir.

Django, Celerybeat and Celery with MongoDB as the Broker