sql >> Databasteknik >  >> NoSQL >> Redis

DisabledBackend:Oregelbundet beteende med selleri, Redis &Flask

Så det verkar som att jag behöver komma åt AsyncResult endast via min Celery-app-instans, istället för genom Celery, eller skicka Celery-appen som ett argument.

Så det här fungerar inte:

from celery.result import AsyncResult

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

Detta fungerar:

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

Detta fungerar också:

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

Jag gissar att det som händer är att genom att anropa AsyncResult direkt från Celery har den inte åtkomst till Celerys konfigurationer, därför tror den att det inte finns någon backend konfigurerad för att söka efter resultat.

Men det skulle bara förklara fullständigt fel i funktionen, och inte det oberäkneliga beteendet. Jag antar att detta beror på olika trådar och situationer där appinstansen är viktig, så Celery hittar det, men inte så säker.

Jag har kört ett par tester och verkar fungera bra igen efter att ha ändrat det importerade AsyncResult , men jag fortsätter att gräva.




  1. Hur man kommer igång med databasautomatisering

  2. Hur man väljer det bästa MongoDB-hotellet för ditt företag

  3. Vad är __v-fältet i Mongoose

  4. Uppdatera MongoDB-fältet med värdet av ett annat fält