मेरे पास एकाधिक क्लाइंट /stream
पर सर्वर भेजे गए ईवेंट स्ट्रीम से कनेक्ट करने का प्रयास कर रहे हैं। यह एक क्लाइंट के साथ काम करता है, लेकिन किसी भी क्लाइंट के परिणाम को नए क्लाइंट में जोड़ने के लिए अनिश्चित काल तक डेटा के लिए अवरुद्ध हो रहा है। यदि मैं अधिक डेटा भेजता हूं, तो यह केवल पहले ग्राहक को जाता है, और कोई अन्य नहीं।सर्वर ने फ्लास्क/रेडिस के साथ ईवेंट भेजे: एक से अधिक ग्राहक स्ट्रीम कैसे देख सकते हैं?
import flask
import time
app = flask.Flask(__name__)
def event_stream():
for i in xrange(9999):
yield "data: %d\n\n" % i
time.sleep(1)
@app.route("/stream", methods=[ "GET" ])
def stream():
return flask.Response(
event_stream(),
mimetype="text/event-stream"
)
मैं तो gunicorn --worker-class=gevent -w 4 -t 99999 app:app
के साथ इस चलाएँ:
यहां एक छोटा टुकड़ा है कि मेरी समस्या को दिखाता है। यह एक ग्राहक के लिए काम करता है, लेकिन GET /stream
जारी करते समय कोई अन्य अवरुद्ध हो जाता है।
ब्लॉक का कारण क्या है, और मुझे इसे कैसे ठीक करना चाहिए?
मैंने थोड़ा और डीबग किया और कुछ अजीब परिणाम प्राप्त किए। अगर मैं इस प्रक्रिया को करने, तो ऐसा होता है:
- प्रारंभ ग्राहक 1 (केवल ग्राहक 1 डेटा प्राप्त)
- प्रारंभ ग्राहक 2 (केवल ग्राहक 1 डेटा प्राप्त)
- प्रारंभ ग्राहक 3 (केवल ग्राहक 1 प्राप्त डेटा)
- प्रारंभ ग्राहक 4 (केवल ग्राहक 1 डेटा प्राप्त)
- पुनः प्रारंभ ग्राहक 1 (सभी 4 ग्राहकों अचानक एक ही समय में डेटा प्राप्त करना शुरू)
http://stackoverflow.com/questions/13386681/streaming-data-with-python-and-flask – farzad
@ फ़ारज़ैड यह उदाहरण भी इस समस्या से पीड़ित है। –