मैं एक कार्य को कॉल करने की कोशिश कर रहा हूं और उस कार्य के लिए कतार बना रहा हूं यदि यह अस्तित्व में नहीं है तो तुरंत उस कतार में बुलाए गए कार्य को सम्मिलित करें।सेलेरी गतिशील कतार निर्माण और रूटिंग
@task
def greet(name):
return "Hello %s!" % name
def run():
result = greet.delay(args=['marc'], queue='greet.1',
routing_key='greet.1')
print result.ready()
तो मैं एक कस्टम रूटर है:
class MyRouter(object):
def route_for_task(self, task, args=None, kwargs=None):
if task == 'tasks.greet':
return {'queue': kwargs['queue'],
'exchange': 'greet',
'exchange_type': 'direct',
'routing_key': kwargs['routing_key']}
return None
इस एक मुद्रा greet.1
कहा जाता है और एक कतार greet.1
कहा जाता है लेकिन कतार खाली है बनाता है मैं निम्नलिखित कोड है। एक्सचेंज को केवल greet
कहा जाना चाहिए जो greet.1
जैसे greet.1
नामक कतार में रूटिंग कुंजी को रूट करने के बारे में जानता है।
कोई विचार?
पर मैन्युअल रूप से कतार बनाने के बारे में चिंता करना बंद कर दिया हो, तो बस एक नया कार्यकर्ता उत्पन्न करें जो कतार बनाता है और स्वचालित रूप से आदान-प्रदान करता है जो मेरी समस्या के लिए अधिक समझ में आता है। हमेशा के रूप में, उत्तर के लिए धन्यवाद। :) – Marconi