如何重新启动扭曲和洪水客户端RPC的反应堆



我在使用扭曲框架时遇到问题,我无法重新启动。我的代码需要连接到某些不同节点中的不同淹没客户端守护程序。为此,我需要先断开连接,但 twisted 不允许我重新连接到另一个客户端。这些是我的代码:

    ip = ['localhost', 'debci-lab']
    for i in range(len(ip)):
    ip_connect = ip[i]
    d = client.connect(host=ip_connect)
    # We create a callback function to be called upon a successful connection
    def on_get_config(result):
    print result
    def on_connect_success(result):
        print "Connection was successful!"
        print "result:", result
        client.core.get_torrent_status('dd69058c737d914c4e8e985d47a29606de80d34e', ['download_payload_rate']).addCallback(on_get_config)
        client.disconnect()
    # We add the callback to the Deferred object we got from connect()
    d.addCallback(on_connect_success)
    # We create another callback function to be called when an error is encountered
    def on_connect_fail(result):
        print "result:", result
    # We add the callback (in this case it's an errback, for error)
    d.addErrback(on_connect_fail)
    reactor.run()

循环只工作一次,并输出以下内容:连接成功!结果:10

但不是预期的download_rate。

谢谢你的时间。

此致敬意。

这对我来说使用 reactor.crash() for 循环,reactor.start()做某事,停止并重复......

def main(myrequest):
    print myrequest
    data=[]
    errors=[]
    def got_data(mydata):
        data.append(mydata)
        process()
    def no_data(err):
        print >>sys.stderr, 'failed:', err
        errors.append(err)
        process()
    def process():
        if errors or data:
            reactor.crash()
    make_request("localhost", 9000, got_data, no_data, myrequest)
    return data
if __name__ == '__main__':
    bbg=["DBK GY EQUITY","IBM US Equity"]
    flds=["DVD_HIST"]
    for b in bbg:
        myrequest=bulk(b , flds)
        print ">>>>>>>>>>>>>>", main(myrequest)

反应堆不可重新启动。 你给reactor.run()打电话一次。 您可以在反应堆运行时建立任意数量的连接。 当您准备好退出程序时,您可以调用reactor.stop()

另请参阅使用扭曲连接两次 - 如何正确执行此操作?

最新更新