2013-10-28 11 views
7

अलग करना मैं अपनी ईमेल सेवा चाहता हूं जिसे मैंने अपने फ्लास्क एप्लिकेशन से पूरी तरह से डीकॉप्ल किया है। मैं खरगोश के साथ अजवाइन का उपयोग कर रहा हूँ। तो मुझे आश्चर्य है कि मैं एक तरीका है जिससे मैं अजवाइन को कॉन्फ़िगर कर सकता हूं ताकि एक प्रोजेक्ट में मेरे पास फ्लास्क एप्लिकेशन हो जो संदेश को कतार (निर्माता) भेजता है। और एक और प्रोजेक्ट में मेरे पास सेलेरी इंस्टेंस चल रहा है जो संदेश को सुनता है और कार्य (उपभोक्ता) निष्पादित करता है। मैं अभी भी उलझन में हूं कि संचार वास्तव में कैसे काम करेगा? क्या मैं अपने फ्लास्क एप्लिकेशन या सेलेरी प्रोजेक्ट में एपीआई (जो ईमेल भेजता है) डालता हूं? आखिरकार मैं विभिन्न ईसी 2 उदाहरणों में फ्लास्क एप्लिकेशन और सेलेरी इंस्टेंस करना चाहता हूं - संदेश ब्रोकर के रूप में काम कर रहे खरगोश के साथ।सेलेरी उपभोक्ता और निर्माता

आपकी मदद के लिए धन्यवाद!

उत्तर

5

आप कार्य नाम का उपयोग कर कार्यकर्ता को RabbitMQ के माध्यम से कार्य भेजने के लिए Celery's send_task फ़ंक्शन का उपयोग कर सकते हैं।

कार्य वर्तमान प्रक्रिया आप के बजाय नाम से कार्य कॉल करने के लिए send_task() का उपयोग कर सकते में पंजीकृत नहीं है, तो: आप अभी भी मॉड्यूल आप में अजवाइन ऐप्लिकेशन मौजूद है आयात करने के लिए की जरूरत है।

उदाहरण:

from yourmodule.yourapp import celery 
celery.send_task("yourtasksmodule.yourtask", args=["Hello World"]) 
+0

अगर यह मेरी मॉड्यूल आयात किए बिना यह करने के लिए संभव है मैं सोच रहा था (के रूप में मैं एक अलग सर्वर उदाहरण में डालने पर योजना बना रहा हूँ)। जैसा कि अजवाइन पाइप (खरगोश) के दोनों तरफ होना चाहिए, मेरा सवाल यह है - क्या मैं अजवाइन से उप-वर्ग कर सकता हूं। कार्य - ताकि एक तरफ मेरे पास विधियां हों जो परिभाषित करती हैं कि जब कोई कार्य कहा जाता है तो क्या होता है (संदेश भेजता है) और दूसरी तरफ वास्तविक कार्य करते हैं? – user2216194

+0

इससे कोई फर्क नहीं पड़ता - मुझे यह काम करने के लिए मिला। आपकी सहायताके लिए धन्यवाद! – user2216194

+0

@ उपयोगकर्ता 2216194 क्या आप समझा सकते हैं कि आपने इसे कैसे काम किया? मैं आपके जैसी ही समस्या से फंस गया हूं – rrawat

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