sql >> Databáze >  >> NoSQL >> Redis

DisabledBackend:Nevyrovnané chování s celerem, Redisem a baňkou

Zdá se tedy, že potřebuji získat přístup k AsyncResult pouze prostřednictvím mé instance aplikace Celery namísto přes Celery, nebo předat instanci aplikace Celery jako argument.

Takže tohle nefunguje:

from celery.result import AsyncResult

@app.route('/status/<task_id>')
def get_status(task_id):
    task = AsyncResult(task_id)
    return task.state

Toto funguje:

from app import my_celery # Your own Celery Application Instance

@app.route('/status/<task_id>')
def get_status(task_id):
    task = my_celery.AsyncResult(task_id)
    return task.state

Toto také funguje:

from app import my_celery
from celery.result import AsyncResult

@app.route('/status/<task_id>')
def get_status(task_id):
    task = AsyncResult(task_id, app=my_celery)
    return task.state

Hádám, že se to stane voláním AsyncResult přímo z Celery, nemá přístup ke konfiguracím Celery, a proto si myslí, že neexistuje žádný backend nakonfigurovaný k dotazování na výsledky.

To by ale vysvětlovalo pouze úplné selhání funkce, nikoli nevyzpytatelné chování. Hádám, že je to kvůli různým vláknům a situacím, ve kterých je instance aplikace důležitá, takže to Celery zjistí, i když si to není příliš jistý.

Provedl jsem několik testů a zdá se, že po změně importovaného AsyncResult opět funguje dobře , ale budu kopat dál.




  1. Potřebuji načíst objekt MongoDB pouze pomocí položky filtrovaného pole

  2. Jak nainstaluji Predis na okna XAMPP?

  3. MongoDb - Využití multi CPU server pro zápis náročné aplikace

  4. Optimalizace dotazů MongoDB