J'implmented un TCP au serveur proxy HTTP à l'aide urllib,Quel est le goulot d'étranglement d'un TCP2HTTP (urllib) Proxy ThreadingTcpServer en Python
qui convertit une requête TCP à une requête HTTP à un serveur spécifique,
il est quelque chose comme ceci:
class RequestHandler(socketserver.BaseRequestHandler):
def handle(self):
size, = struct.unpack('L', s.recv(4))
data = s.recv(size)
assert len(data) == size
res = urllib.urlopen('http://myserver.com/', encode_data(data)).read()
s.sendall(res)
s.shutdown(SHUT_WR)
if __name__ == '__main__':
address = ('', 8080)
server = socketserver.ThreadingTCPServer(address, RequestHandler)
server.serve_forever()
Mais il est devenu très lent sur de nombreuses connexions (pas trop: 20) en même temps.
Où est le goulot d'étranglement? Est-ce lié au problème de GIL?
BTW: Je suis sous Windows si ForkingMixin n'est pas ici
@ user522809: est-ce pas le protocole HTTP sur le protocole TCP. Ou pour dire, HTTP serait un protocole au niveau de l'application. – pyfunc
@pyfunc: pas un proxy TCP2HTTP général. Il convertit seulement une requête TCP spécifique en requête HTTP correspondante. Vous pouvez dire que HTTP est utilisé ici comme un protocole de niveau d'application. – user522809