我已经使用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