2013-04-01 16 views
5

Używam framework Bottle implementującego żądanie i odpowiedź WSGI, a ze względu na problem z jednym wątkiem zmieniłem serwer na PythonWSGIServer i przetestowałem go z ławką Apache, ale wynik składa się z uszkodzonej rury, która jest podobne z tym pytaniem How to prevent errno 32 broken pipe?. Próbowałem odpowiedzi, ale bezskutecznie.Python Paste using Bottle framework Broken Pipe Error

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 

Kod serwera pokazano poniżej i nie mam pojęcia, jak poprawić połączenie, używając puli wątków?

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) 

Odpowiedz

3

Problem jest spowodowany WSGIServer jest serwerem synchroniczny, a to nie ma zastosowania do wysokich jednoczesnych użytkowników wysyłania żądań w tym samym czasie. Aby ominąć te awarie, można użyć wielu frameworków innych firm. Popularne wśród nich są biblioteki Greenlet Gevent, Tornado i CherryPy. Wszystkie oparte są na metodach opartych na zdarzeniach i asynchronicznych, umożliwiając obsługę wielu równoczesnych użytkowników.

Powiązane problemy