Установите одновременные соединения Websocket с сервером с помощью клиента Python Twisted Websocket

Я пытаюсь открыть одновременные подключения к веб-сокету со стороны клиента (который имеет ограничение в 60 тыс. Портов на машину) с помощью клиента Python Twisted Authobhan Websocket. Но я не могу открыть не более 20 тыс. Подключений, используя следующий код:

from autobahn.twisted.websocket import WebSocketClientProtocol, WebSocketClientFactory

class WebSocketClient(WebSocketClientProtocol):

    def _handshake_request(self):
        pass

    def onOpen(self):
        self._handshake_request()

    def onConnect(self, response):
        pass
    def onMessage(self,data):
        pass


class WebSocketFactory(WebSocketClientFactory):

    """WebSocketClient Factory"""

    protocol = WebSocketClient

if __name__ == '__main__':

    factory = WebSocketFactory()

    ##### Note here. ######
    for _ in range(num_connections):
        reactor.connectTCP(ws_url, ws_port, factory)
    #####

    reactor.run()

В цикле я использовал "ctor.connectTCP". Это правильный способ открыть параллельные соединения через сокет с помощью Twisted?

Дай мне знать.

1 ответ

Вам нужно выполнять меньше одновременных попыток подключения. Возможно, вам удастся выдержать 20 тыс. Или более соединений, но вы не сможете установить их все одновременно.

Ограничьте себя несколькими десятками или сотнями одновременно. Вы можете использовать twisted.internet.task.cooperate за это.

Другие вопросы по тегам