2015-12-10 5 views
10

मैं स्क्लेइट के साथ सेलेरी के साथ बैकएंड के रूप में काम करने के लिए फ्लास्क प्राप्त करने की कोशिश कर रहा हूं।सेलेरी के साथ फ्लेस्क ब्रोकर के रूप में, कार्य को कॉल करते समय त्रुटि

CELERY_BROKER_URL = 'sqla+sqlite:///' + os.path.join(basedir, 'celery.db') 

def make_celery(app): 
    celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL']) 
    celery.conf.update(app.config) 
    TaskBase = celery.Task 
    class ContextTask(TaskBase): 
     abstract = True 
     def __call__(self, *args, **kwargs): 
      with app.app_context(): 
       return TaskBase.__call__(self, *args, **kwargs) 
    celery.Task = ContextTask 
    return celery 

एक कार्यकर्ता, I get this error when trying to call a dummy task शुरू करने के बाद:: निम्नलिखित कोड है, तथापि के साथ

error: [Errno 10061] No connection could be made because the target machine actively refused it 

कोड:

@app.route('/test') 
def test(): 
    t = add_together.delay(100,200) 
    return str(t.wait()) 

क्या गलत है? मैंने स्क्लेइट/स्क्लाक्लेमी/फ्लास्क/सेलेरी के किसी भी संयोजन को गुगल करने का प्रयास किया है, लेकिन समाधान खोजने में असमर्थ रहे हैं।

उत्तर

0
error: [Errno 10061] No connection could be made because the target machine actively refused it 

आमतौर पर त्रुटि का मतलब है कि लक्ष्य पोर्ट किसी भी प्रकार की फ़ायरवॉल द्वारा अनुपलब्ध या अवरुद्ध है।

File "C:\Users\Robus\banking_virtenv\lib\site-packages\amqp\transport.py", line 95, in __init__ 
     raise socket.error(last_err) 
    error: [Errno 10061] No connection could be made because the target machine actively refused it 

ऐसा लगता है कि यह एएमक्यूपी परिवहन का उपयोग करके कनेक्ट करने का प्रयास कर रहा है। कृपया अपनी कॉन्फ़िगरेशन जांचें।

+0

सही है, मैं त्रुटि को समझते हैं। हालांकि, क्या यह इसके बजाय एसक्लाइट डेटाबेस का उपयोग करने की कोशिश नहीं करनी चाहिए? या क्या मैं कुछ न कुछ भूल रहा हूं? – Robus

+0

@Robus यह मेरा प्रश्न भी है। इसे SQLite का उपयोग करने की कोशिश करनी चाहिए, AMQP नहीं। तो शायद यह मुद्दा है कि आपने सेलेरी को कैसे कॉन्फ़िगर किया है। – masnun

3

जैसा कि आप अपने ट्रेस में देख सकते हैं, आपका ऐप अभी भी rabbitmq-server से कनेक्ट करने का प्रयास कर रहा है। इसका मतलब है कि यह ठीक से कॉन्फ़िगर नहीं है। मुझे नहीं मिला कि आप BROKER_URL के बजाय CELERY_BROKER_URL का उपयोग क्यों कर रहे हैं। त्वरित समाधान हो, इस परिवर्तन कर सकते हैं:

celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL']) 

celery = Celery(app.import_name, 
       broker='sqla+sqlite:///' + os.path.join(basedir, 'celery.db'), 
       backend='db+sqlite:///' + os.path.join(basedir, 'celery_results.db')) 

करने के जाँच यह कैसे काम करता

संबंधित मुद्दे