2015-02-23 5 views
5

मेरे पास बैकएंड पर कुछ डेटा विश्लेषण करने के लिए एक फ्लास्क वेबपैड चल रहा पांडा है।फ्लास्क-सॉकेटियो प्रति उपयोगकर्ता एक कमरा? महंगा?

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

मैं सोच रहा था कि सॉकेटियो यहां अच्छा उपयोग हो सकता है - मैं एक सॉकेट कनेक्शन खोलूंगा और इस तरह फ़ाइल को पांडा में लोड करने के बाद, उपयोगकर्ता सॉकेट के माध्यम से कम ओवरहेड के साथ डेटा को अधिक प्रतिक्रियाशील तरीके से पूछताछ और क्वेरी कर सकता है।

तो मेरे सवाल अभी है:

  • मैं प्रत्येक उपयोगकर्ता के लिए एक कमरे को खोलने चाहिए के रूप में उपयोगकर्ताओं न एक दूसरे के साथ बातचीत करने के लिए की जरूरत है?
  • क्या यह स्केल - प्रति उपयोगकर्ता एक कमरा खोल रहा है?
  • नामस्थान यहां कहां फिट है? क्या मैं वेबसाइट के विभिन्न वर्गों में नेमस्पेस असाइन करता हूं और प्रत्येक उपयोगकर्ता के लिए प्रत्येक नेमस्पेस के नीचे कमरे खोलता हूं?
  • या क्या मुझे एक बंदर पैच धागे को फेंकना चाहिए? प्रति उपयोगकर्ता ग्रीनलेट?
+0

मान लीजिए कि 1 उपयोगकर्ता = 1 वेबसाकेट कनेक्शन और आप वास्तव में सॉकेट.io का उपयोग कर रहे हैं, तो हर बार जब कोई नया उपयोगकर्ता कनेक्ट होता है तो आपको मैन्युअल रूप से एक नया कमरा तुरंत चालू करने की आवश्यकता नहीं होगी; socket.io स्वचालित रूप से प्रत्येक कनेक्शन के लिए अद्वितीय कमरा बनाता है। – theaccordance

उत्तर

8

प्रति उपयोगकर्ता एक कमरा खोलना एक वैध समाधान है जिसे मैं आम तौर पर सर्वर-धक्का संदेशों में व्यक्तिगत उपयोगकर्ताओं को संबोधित करने में सक्षम होने के तरीके के रूप में अनुशंसा करता हूं।

कमरे मेमोरी में पाइथन डेटा संरचना में आयोजित किए जाते हैं, इसलिए वे केवल महंगी हैं कि वे थोड़ी सी मेमोरी का उपयोग करते हैं। मैंने प्रति उपयोगकर्ता की मात्रा को माप नहीं लिया है, लेकिन शायद यह कमरे के नाम के शीर्ष पर केवल कुछ बाइट्स है।

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

उम्मीद है कि इससे मदद मिलती है।

+0

बिल्कुल सही। धन्यवाद मिगुएल। आपकी पुस्तक का बड़ा प्रशंसक, ब्लॉग पोस्ट ... –

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