Я использую следующий закрученный скрипт 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 после установления соединения (запроса) я перенаправляю запрос на удаленный IP-адрес x.x.x.x через порт 80. Теперь я хочу сбалансировать нагрузку входящих запросов на несколько удаленных IP-адресов (x.x.x.x, y.y.y.y, z.z.z.z) через порт 80. Я посмотрел на txLoadBalancer, но не смог найти ни одного примера, подходящего для этого.
Есть ли другой способ сделать это с помощью скрученной структуры?
(Примечание: я хочу программно сбалансировать запросы, пожалуйста, не предлагайте мне использовать сторонние балансировщики нагрузки)