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?
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
Hiç bu işe yaramadı mı? Ben aynı sorunu yaşıyorum – Nathan
Ne yazık ki yapmadım. – Joe