Redis
 sql >> Baza danych >  >> NoSQL >> Redis

DisabledBackend:nieprawidłowe zachowanie z selerem, redis i flask

Wygląda więc na to, że muszę uzyskać dostęp do AsyncResult tylko przez moją instancję aplikacji Celery, zamiast przez Celery, lub przekaż instancję aplikacji Celery jako argument.

Więc to nie działa:

from celery.result import AsyncResult

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

To działa:

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

To również działa:

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

Zgaduję, co się dzieje, wywołując AsyncResult bezpośrednio z Celery, nie ma dostępu do konfiguracji Celery, dlatego uważa, że ​​nie ma backendu skonfigurowanego do odpytywania wyników.

Ale to tylko wyjaśniałoby całkowitą awarię funkcji, a nie błędne zachowanie. Zgaduję, że dzieje się tak z powodu różnych wątków i sytuacji, w których instancja aplikacji jest ważna, więc Celery ją znajduje, ale nie jest zbyt pewny.

Przeprowadziłem kilka testów i wydaje się, że po zmianie zaimportowanego AsyncResult znowu działa dobrze , ale będę kopać dalej.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bóg plik konfiguracyjny do monitorowania istniejących procesów?

  2. Jak wydać polecenie HGET/GET dla bazy danych Redis za pośrednictwem Node.js?

  3. Podejścia do przechowywania danych geoprzestrzennych w Redis

  4. Redis Stack Exchange, jak usuwać lub pobierać klucze według wzorca

  5. Laravel:Jak sprawdzić dostępność Redisa?