2013-04-01 11 views
5

Sto utilizzando Bottle framework implementando la richiesta e la risposta WSGI e, a causa del problema del thread singolo, ho modificato il server in PythonWSGIServer e testato con Apache bench ma il risultato è un errore è simile a questa domanda How to prevent errno 32 broken pipe?. Ho provato la risposta ma inutilmente.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 

Il codice del server è mostrato di seguito, e non ho idea di come migliorare il collegamento, utilizzando pool di thread?

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) 

risposta

3

il problema è dovuto ad WSGIServer è un server sincrono, e non è applicabile per gli alti utenti simultanei inoltrano richieste di invio allo stesso tempo. Per aggirare questi fallimenti, è possibile utilizzare molti framework di terze parti. Popolare tra loro sono le librerie Greenlet di Gevent, Tornado e CherryPy. Tutti sono basati su metodologie basate su eventi e asincroni, consentendo loro di gestire più utenti simultanei.

Problemi correlati