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

时间:2010-11-28 07:47:42

标签: 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
        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

1 个答案:

答案 0 :(得分:0)

使用探查器,其中一个:http://docs.python.org/library/profile.html