2013-04-01 12 views
5

मैं डब्लूएसजीआई अनुरोध और प्रतिक्रिया को लागू करने वाली बोतल ढांचे का उपयोग कर रहा हूं और एकल थ्रेड मुद्दे के कारण, मैंने सर्वर को पायथन WSGIServer में बदल दिया और अपाचे बेंच के साथ परीक्षण किया लेकिन परिणाम में टूटा हुआ पाइप शामिल है इस प्रश्न How to prevent errno 32 broken pipe? के समान है। मैंने जवाब देने की कोशिश की है लेकिन इसका कोई फायदा नहीं हुआ है।बोतल ढांचे का उपयोग करके पाइथन पेस्ट टूटा हुआ पाइप त्रुटि

Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/paste/httpserver.py", line 1068, in process_request_in_thread 
    self.finish_request(request, client_address) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 323, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 641, in __init__ 
    self.finish() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 694, in finish 
    self.wfile.flush() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 303, in flush 
    self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 

सर्वर कोड नीचे दिखाया गया है, और मुझे नहीं पता कि थ्रेड पूल का उपयोग करके कनेक्शन को कैसे सुधारें?

from paste import httpserver 

    @route('/') 
    def index(): 
     connection = pymongo.MongoClient(connectionString) 
     db = connection.test 
     collection = db.test 
     return str(collection.find_one()) 

    application = default_app() 
    httpserver.serve(application, host='127.0.0.1', port=8082) 

उत्तर

3

समस्या है कारण WSGIServer करने के लिए एक तुल्यकालिक सर्वर है, और यह उच्च समवर्ती उपयोगकर्ताओं एक ही समय में अनुरोध भेजने के लिए लागू नहीं है। इन फॉलबैक को बाईपास करने के लिए, बहुत सारे तृतीय-पक्ष ढांचे का उपयोग किया जा सकता है। उनमें से लोकप्रिय गेवेन ग्रीनलेट लाइब्रेरीज़, टोरनाडो और चेरीपी हैं। वे सभी इवेंट-संचालित और एसिंक्रोनस पद्धतियों पर आधारित हैं, जो उन्हें कई समवर्ती उपयोगकर्ताओं को संभालने में सक्षम बनाता है।

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