Connecting to Python Twisted Clients

I have this twisted client that connects to a twisted server with an index. I launched this client from the command line. It worked fine. Now I modified it to run in a loop (see main() ) so that I can continue to query. But the client only works once. Next time he just says connection lost \n Connection lost - goodbye! .

What am I doing wrong? In the loop, I reconnect to the server, is this wrong?

 from twisted.internet import reactor from twisted.internet import protocol from settings import AS_SERVER_HOST, AS_SERVER_PORT # a client protocol class Spell_client(protocol.Protocol): """Once connected, send a message, then print the result.""" def connectionMade(self): self.transport.write(self.factory.query) def dataReceived(self, data): "As soon as any data is received, write it back." if data == '!': self.factory.results = '' else: self.factory.results = data self.transport.loseConnection() def connectionLost(self, reason): print "\tconnection lost" class Spell_Factory(protocol.ClientFactory): protocol = Spell_client def __init__(self, query): self.query = query self.results = '' def clientConnectionFailed(self, connector, reason): print "\tConnection failed - goodbye!" reactor.stop() def clientConnectionLost(self, connector, reason): print "\tConnection lost - goodbye!" reactor.stop() # this connects the protocol to a server runing on port 8090 def main(): print 'Connecting to %s:%d' % (AS_SERVER_HOST, AS_SERVER_PORT) while True: print query = raw_input("Query:") if query == '': return f = Spell_Factory(query) reactor.connectTCP(AS_SERVER_HOST, AS_SERVER_PORT, f) reactor.run() print f.results return if __name__ == '__main__': main() 
+4
source share
1 answer

You do not quite understand how the Twisted reactor works.

reactor.run() starts the cycle of the reactor cycle --- this is a blocking call that calls "forever."

See http://twistedmatrix.com/documents/10.2.0/core/howto/reactor-basics.html for various topics related to reactors.

+3
source

Source: https://habr.com/ru/post/1333343/


All Articles