Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

अक्षम बैकएंड:अजवाइन, रेडिस और फ्लास्क के साथ अनियमित व्यवहार

तो ऐसा लगता है कि मुझे AsyncResult तक पहुंचने की आवश्यकता है सेलेरी के बजाय केवल मेरे सेलेरी ऐप इंस्टेंस के माध्यम से, या सेलेरी ऐप इंस्टेंस को तर्क के रूप में पास करें।

तो, यह काम नहीं करता:

from celery.result import AsyncResult

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

यह काम करता है:

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

यह भी काम करता है:

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

मैं अनुमान लगा रहा हूं कि क्या होता है AsyncResult . पर कॉल करके सीधे सेलेरी से, यह सेलेरी के कॉन्फ़िगरेशन तक नहीं पहुंचता है, इसलिए यह सोचता है कि क्वेरी परिणामों के लिए कोई बैकएंड कॉन्फ़िगर नहीं किया गया है।

लेकिन यह केवल फ़ंक्शन की पूर्ण विफलता की व्याख्या करेगा, न कि अनिश्चित व्यवहार की। मुझे लगता है कि यह अलग-अलग थ्रेड्स और परिस्थितियों के कारण है जिसमें ऐप इंस्टेंस महत्वपूर्ण हो रहा है, इसलिए सेलेरी इसे ढूंढती है, हालांकि यह सुनिश्चित नहीं है।

मैंने कुछ परीक्षण चलाए हैं और लगता है कि आयातित AsyncResult को बदलने के बाद फिर से ठीक काम कर रहा है , लेकिन मैं खुदाई करता रहूंगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक्सपायर टाइम एक्सप्रेस और रेडिस सेशन

  2. रेडिस में सम्मिलित कुंजी प्राप्त करें

  3. रेडिस और मेम्बेस के बीच प्रमुख अंतर क्या है?

  4. Redis . में एकाधिक कुंजियों का नाम कैसे बदलें

  5. बिना eval के रेडिस से वस्तु प्राप्त करें?