我正在尝试实现一个充当 Twisted 客户端的功能。它是从我无法控制的代码中调用的。我尝试了类似的东西(这取自 pbsimpleclient.py 示例代码):
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
from twisted.spread import pb
from twisted.internet import reactor
from twisted.python import util
def remcall(**kw):
factory = pb.PBClientFactory()
reactor.connectTCP("localhost", 8789, factory)
d = factory.getRootObject()
# kw here is what's passed in via remcall
d.addCallback(lambda object: object.callRemote("echo", kw))
d.addCallback(lambda echo: 'server echoed: '+repr(echo))
d.addErrback(lambda reason: 'error: '+str(reason.value))
d.addCallback(util.println)
d.addCallback(lambda _: reactor.stop())
reactor.run()
来电者会拨打如下电话:
remcall(hello=1, world=2)
remcall(hi=3, there=4)
但正如您可能已经猜到的那样,它给出了“twisted.internet.error.ReactorNotRestartable”错误。
最好的方法是什么?我不太担心从远程端得到响应,但我应该知道它是否失败以及为什么。