sql >> Database >  >> NoSQL >> Redis

DisabledBackend:grillig gedrag met selderij, redis en kolf

Het lijkt er dus op dat ik toegang moet krijgen tot AsyncResult alleen via mijn Celery-app-instantie, in plaats van via Celery, of geef de Celery-app-instantie door als argument.

Dit werkt dus niet:

from celery.result import AsyncResult

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

Dit werkt:

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

Dit werkt ook:

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

Ik vermoed dat wat er gebeurt, is dat door AsyncResult . te bellen rechtstreeks van Celery, heeft het geen toegang tot de configuraties van Celery, daarom denkt het dat er geen backend is geconfigureerd om resultaten op te vragen.

Maar dat zou alleen het volledige falen van de functie verklaren, en niet het grillige gedrag. Ik vermoed dat dit komt door verschillende threads en situaties waarin de app-instantie belangrijk is, dus Celery vindt het, maar niet al te zeker.

Ik heb een aantal tests uitgevoerd en het lijkt weer goed te werken na het wijzigen van de geïmporteerde AsyncResult , maar ik blijf graven.




  1. Met back-upcodering voor MySQL, MongoDB en PostgreSQL - ClusterControl 1.5.1

  2. $filter binnen $project MongoDB Spring Data gebruiken

  3. Wat zijn HBase-znodes?

  4. Hoe alleen de waarde van een veld in mongodb te retourneren