2011-08-31 8 views
6

तो मैं Pylons में फ़ाइल अपलोड है कि मैं किसी के साथ मेरी मदद करने में सक्षम हो सकता है आशा करती हूं कि साथ एक नहीं बल्कि अप्रिय समस्या आ रही है। मूल रूप से मैंने इस मुद्दे को here पोस्ट किया था, यह सोचकर कि यह पिलोन के साथ एक मुद्दा था, लेकिन तब से यह निष्कर्ष निकाला गया है कि यह समस्या सर्वर के कारण है, यानी पेस्ट, और मैंने बिल्कुल ठीक किया है कि समस्या कहां होती है, लेकिन मैं अनिश्चित हूं इसे कैसे हल करें। व्यवहार इस प्रकार है। मेरे पास एक पिलोन वेब एप्लिकेशन है जो मैं पास्टर के माध्यम से सेवा कर रहा हूं। एप्लिकेशन का एक टुकड़ा उपयोगकर्ताओं को सिस्टम में फाइल अपलोड करने की अनुमति देता है, और कभी-कभी ये बल्कि बड़े (> 50 एमबी) हो सकते हैं। ऐसे अपलोड के दौरान, सर्वर sporadically कनेक्शन रीसेट करता है (यानी, क्रोम में त्रुटि "त्रुटि 101 (नेट :: ERR_CONNECTION_RESET) पढ़ता है: कनेक्शन रीसेट किया गया था।"।) यह हमेशा होता है, केवल ~ 50% बड़ी फाइलों के साथ समय।कनेक्शन फिर सेट करता है अपलोड

इन मामलों पर, सर्वर कभी नहीं आवेदन स्तर तक पद हाथ। कोई अपवाद नहीं फेंक दिया जाता है (कम से कम, जो मुझे मिल सकता है)। मैंने इस मुद्दे को cascade.py तक सीमित कर दिया है (विशेष रूप से, httpserver.py से wsgi_application विधि लागू)। उत्तरार्द्ध से:

परिणाम = self.server.wsgi_application (self.wsgi_environ, self.wsgi_start_response)

cascade.py की कॉल समारोह में, फ़ाइल के लिए लिखा हुआ प्रतीत होता है एक अस्थायी फ़ाइल। प्रासंगिक पाश में शुरू होता है:

जबकि 0 copy_len>:

यह तो हिस्सा एक एक करके फ़ाइल खोलने के लिए लिखता है। इनमें से कोई भी व्यक्तिगत रूप से एक अपवाद फेंकता नहीं लिखता है। हालांकि, सर्वर अक्सर इन लिखने के दौरान 'दूर जाना' होगा, प्रतीत होता है कि यादृच्छिक रूप से (समय इस के साथ सहसंबंधित प्रतीत नहीं होता है)। इसलिए यदि मैं copy_len आकार को मुद्रित करता हूं, जिसे कम किया जा रहा है, तो मैं इसे एक बिंदु तक कम करता हूं, और फिर सर्वर अचानक अचानक 'कनेक्शन रीसेट' भेजता है (या कम से कम क्लाइंट सोचता है) और विधि प्रतीत होता है (copy_len मुद्रित होने के लिए बंद हो जाता है, जैसे कि लूप बाहर निकला गया है, हालांकि यह 0 पर नहीं था)।

मैं पूरी तरह से स्टंप हो गया हूं, 1) यह केवल स्पोरैडिक होता है, और 2) मैं एक वास्तविक त्रुटि/अपवाद को ट्रैक नहीं कर सकता - यह बस तरह ... मर जाता है।

यदि यह महत्वपूर्ण है, तो मैं पेस्ट 1.7.3, पायथन 2.7 और फेडोरा ओएस चला रहा हूं। क्या किसी के पास क्या हो रहा है में कोई अंतर्दृष्टि है, और मैं इसे कैसे हल कर सकता हूं? किसी भी सहायता के लिए आपका बहुत - बहुत धन्यवाद।

उत्तर

1

दो विचारों को ध्यान करने के लिए आ ... इस तरह के nginx के रूप में एक और अधिक मजबूत वेब सर्वर के साथ

  • टेस्ट,। यदि आवश्यकता हो तो इसे समवर्ती रूप से चलाया जा सकता है। देखें कि समस्या बनी रहती है या नहीं। जबकि पेस्ट वेब ऐप्स को संभाल सकता है, जहां तक ​​मुझे पता है कि विशाल फ़ाइल स्थानान्तरण को संभालने का मतलब नहीं है।
  • क्या आप अपलोड के दौरान Chunked Transfer Encoding का उपयोग कर रहे हैं?
+0

+1 यह संभावना एक अजगर/तोरणों मुद्दे से एक वेब सर्वर मुद्दा अधिक है। – Kekoa

0

मुझे उबंटू 10.04 पर अपाचे 2.2 + mod_python 3.3 का उपयोग करने में कोई समस्या नहीं है। मैंने सफलतापूर्वक बड़ी फाइलें अपलोड की हैं (400 एमबी)।

मैंने HTML अपलोड फ़ॉर्म बनाने के लिए uploader का उपयोग किया है।

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