2012-01-05 23 views
7

मेरा वेब ऐप एक्सएमपीपी संदेश (फेसबुक चैट) भेजने में सक्षम होना चाहिए, और मैंने सोचा कि सेलरी इसके लिए एक अच्छा समाधान हो सकता है। एक कार्य में डेटाबेस से पूछताछ और कई उपयोगकर्ताओं को एक्सएमपीपी संदेश भेजना होगा। हालांकि, उस दृष्टिकोण के साथ मुझे हर बार जब मैं कोई कार्य चलाता हूं तो मुझे एक्सएमपीपी सर्वर से कनेक्ट करना होगा, जो कि एक अच्छा विचार नहीं है।सेलेरी श्रमिकों के बीच साझा एक्सएमपीपी कनेक्शन

Facebook Chat API docs से

:

उत्तम आचरण

  • आपका फेसबुक चैट एकीकरण केवल सत्र कि लंबे समय तक रहा होने की उम्मीद है के लिए इस्तेमाल किया जाना चाहिए। ग्राहकों को तेजी से चालू और बंद नहीं करना चाहिए।

वहाँ तो मैं हर बार जब मैं एक संदेश भेजना चाहते हैं फिर से कनेक्ट करने की जरूरत नहीं है कार्यकर्ताओं के बीच एक XMPP कनेक्शन साझा करने के लिए एक रास्ता है? या, क्या कोई बेहतर समाधान है?

उत्तर

4

आप अपने अजवाइन कार्य मॉड्यूल में वैश्विक रूप से एक कनेक्शन बना सकते हैं और संदेशों को भेजने के लिए अपने कार्यों से इसका उपयोग कर सकते हैं। उस स्थिति में कनेक्शन स्टार्ट-अप पर स्थापित किया जाएगा और कार्यकर्ता प्रक्रियाओं के बीच साझा किया जाएगा।

import socket 
from celery.task import task 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(('localhost', 9999)) 

@task 
def echo(arg): 
    s.send(arg) 
    return s.recv() 
+0

हाँ, यही वह विचार है जिसके लिए मैं जा रहा हूं। धन्यवाद। –

0

एक लंबे समय से चलने वाली पृष्ठभूमि नौकरी के बारे में, जिसका काम अन्य अल्पकालिक प्रक्रियाओं से संदेश प्राप्त करना होगा और उन्हें एक्सएमपीपी सॉकेट पर धक्का देना होगा?

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