gpt4 book ai didi

Python Twisted 客户端

转载 作者:太空狗 更新时间:2023-10-30 02:50:09 28 4
gpt4 key购买 nike

我有这个简单的 Twisted 客户端,它连接到 Twisted 服务器并查询索引。如果你看到 fn。 class SpellClient 中的 connectionMade()query 是硬编码的。这样做是为了测试目的。如何将此查询从外部传递给此类?

代码——

from twisted.internet import reactor
from twisted.internet import protocol

# a client protocol
class SpellClient(protocol.Protocol):
"""Once connected, send a message, then print the result."""

def connectionMade(self):
query = 'abased'
self.transport.write(query)

def dataReceived(self, data):
"As soon as any data is received, write it back."
print "Server said:", data
self.transport.loseConnection()

def connectionLost(self, reason):
print "connection lost"

class SpellFactory(protocol.ClientFactory):
protocol = SpellClient

def clientConnectionFailed(self, connector, reason):
print "Connection failed - goodbye!"
reactor.stop()

def clientConnectionLost(self, connector, reason):
print "Connection lost - goodbye!"
reactor.stop()

# this connects the protocol to a server runing on port 8000
def main():
f = SpellFactory()
reactor.connectTCP("localhost", 8090, f)
reactor.run()

# this only runs if the module was *not* imported
if __name__ == '__main__':
main()

最佳答案

协议(protocol),如 SpellClient,可以作为 self.factory 访问它们的工厂。
...所以有很多方法可以做到这一点,但一种方法是在 SpellFactory 上创建另一种方法,例如 setQuery,然后从客户端访问它...

#...in SpellFactory:  
def setQuery(self, query):
self.query = query


#...and in SpellClient:
def connectionMade(self):
self.transport.write(self.factory.query)

...所以主要是:

f = SpellFactory()
f.setQuery('some query')
...

...或者您可以为 SpellFactory 创建一个 _init_ 方法,然后将其传递到那里。

关于Python Twisted 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529945/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com