Python Twisted客户端连接丢失
我有一个twisted客户端,它与一个有索引的twisted服务器连接。我从命令行运行这个客户机。它工作得很好。现在我将其修改为在循环中运行(请参见Python Twisted客户端连接丢失,python,twisted,twisted.web,twisted.client,twisted.internet,Python,Twisted,Twisted.web,Twisted.client,Twisted.internet,我有一个twisted客户端,它与一个有索引的twisted服务器连接。我从命令行运行这个客户机。它工作得很好。现在我将其修改为在循环中运行(请参见main()),以便继续查询。但是客户端只运行一次。下次它只会说连接丢失\n连接丢失-再见 我做错了什么?在我重新连接到服务器的循环中,有没有错 from twisted.internet import reactor from twisted.internet import protocol from settings import AS_SER
main()
),以便继续查询。但是客户端只运行一次。下次它只会说连接丢失\n连接丢失-再见代码>
我做错了什么?在我重新连接到服务器的循环中,有没有错
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()
你不太明白扭曲反应堆是如何工作的
reactor.run()
正在启动reactor的事件循环——这是一个“永远”循环的阻塞调用
请参阅,了解与反应堆相关的各种主题。这意味着什么?我现在应该在循环中使用反应器
?反应器就是循环。有关如何处理标准输入的示例,请参见此处: