I am writing a server with multiple clients. When a client starts, the server may not yet be working. So a "reactor.connectTCP" may fail (no receiving end). Currently I'm solving this by looping on a "reactor.run", ie: 1. connect to server 2. reactor.run 3. if fails, repeat

I understand this is not the way to do it in twisted. How can I do it then?

Thanks, Iddo.

Accepted Answer

You can always try to reconnect within your connectionLost handler, for example:

from twisted.internet.protocol import ClientFactory

class EchoClientFactory(ClientFactory):
    def clientConnectionLost(self, connector, reason):
        connector.connect()

There is also even a built-in ReconnectingClientFactory. See also: this blurb on reconnection.

Written by Santa
This page was build to provide you fast access to the question and the direct accepted answer.
The content is written by members of the stackoverflow.com community.
It is licensed under cc-wiki