Python中TCP2HTTP(urllib)代理ThreadingCpserver的瓶颈是什么

Python中TCP2HTTP(urllib)代理ThreadingCpserver的瓶颈是什么,python,urllib,Python,Urllib,我已经使用urllib实现了一个TCP到HTTP代理服务器 将TCP请求转换为对特定服务器的HTTP请求 是这样的: class RequestHandler(socketserver.BaseRequestHandler): def handle(self): size, = struct.unpack('L', s.recv(4)) data = s.recv(size) assert len(data) == size

我已经使用urllib实现了一个TCP到HTTP代理服务器

将TCP请求转换为对特定服务器的HTTP请求

是这样的:

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()        
但是在许多连接上速度变得非常慢,不是太多:同时大约有20个

瓶颈在哪里?是否与GIL问题有关


顺便说一句:我在Windows上,所以ForkingMixin在这里不可用。

使用探查器,其中之一:

@user522809:不是TCP协议上的HTTP协议。或者说,HTTP将是一个应用程序级协议。@pyfunc:不是通用的TCP2HTTP代理。它只将某些特定的TCP请求转换为相应的HTTP请求。您可以说HTTP在这里用作应用程序级协议。