Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

DisabledBackend:Perilaku Tidak menentu dengan Seledri, Redis &Flask

Jadi sepertinya saya perlu mengakses AsyncResult hanya melalui instance aplikasi Celery saya, bukan melalui Celery, atau meneruskan instance aplikasi Celery sebagai argumen.

Jadi, ini tidak berhasil:

from celery.result import AsyncResult

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

Ini berfungsi:

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

Ini juga berfungsi:

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

Saya menduga apa yang terjadi adalah dengan memanggil AsyncResult langsung dari Celery, ia tidak mengakses konfigurasi Celery, oleh karena itu dianggap tidak ada backend yang dikonfigurasi untuk hasil kueri.

Tapi itu hanya akan menjelaskan kegagalan fungsi sepenuhnya, dan bukan perilaku yang tidak menentu. Saya menduga ini karena utas yang berbeda, dan situasi di mana instance aplikasi menjadi penting, jadi Celery menemukannya, meskipun tidak terlalu yakin.

Saya telah menjalankan beberapa tes dan tampaknya berfungsi dengan baik lagi setelah mengubah AsyncResult yang diimpor , tapi saya akan terus menggali.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Soket modul tidak ditemukan lua

  2. Redis Out of Memory Exceptions, tetapi masih memiliki banyak memori

  3. Redis, Node.js, dan Socket.io :Otentikasi lintas server dan pemahaman node.js

  4. kirim pesan hilir ke google ccs dengan node js

  5. Mengapa kinerja Redis SET lebih baik daripada GET?