如何使用Twisted框架来平衡请求?

2024-09-29 17:18:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用下面的twisted python脚本来监听端口8080上的请求并将请求转发到特定的IP。在

脚本如下:

class ServerProtocol(protocol.Protocol):
    def __init__(self):
        self.buffer = None
        self.client = None

    def connectionMade(self):
        factory = protocol.ClientFactory()
        factory.protocol = ClientProtocol
        factory.server = self

        reactor.connectTCP('x.x.x.x', 80, factory)

    def dataReceived(self, data):
        if (self.client != None):
            self.client.write(data)
        else:
            self.buffer = data

    def write(self, data):
        self.transport.write(data)
        print 'Server: ' + data.encode('hex')

class ClientProtocol(protocol.Protocol):
    def connectionMade(self):
        self.factory.server.client = self
        self.write(self.factory.server.buffer)
        self.factory.server.buffer = ''

    def dataReceived(self, data):
        self.factory.server.write(data)

    def write(self, data):
        self.transport.write(data)
        print 'Client: ' + data.encode('hex')

def main():

    factory = protocol.ServerFactory()
    factory.protocol = ServerProtocol

    reactor.listenTCP(8080, factory)
    reactor.run()

if __name__ == '__main__':
    main()

在类ServerProtocol中,连接(请求)完成后,我将请求转发到端口80上的远程ipx.x.x.x。现在,我想对端口80上的多个远程IP(x.x.x,y.y.y.y,z.z.z.z)的传入请求进行负载平衡。我查看了txLoadBalancer,但找不到任何适合它的例子。在

有没有其他方法可以使用twisted framework?在

在(注:-I希望以编程方式对请求进行负载平衡,请不要建议我使用第三方负载平衡器)


Tags: 端口selfclientnonedataservermainfactory
1条回答
网友
1楼 · 发布于 2024-09-29 17:18:50

所以我认为你需要用两个脚本来分割你的架构。 第一个是负载平衡器,另一个是简单的工人。在

或者您可以使用任何其他负载平衡器,例如haproxy

相关问题 更多 >

    热门问题