RPC崩溃,AttributeError:“NoneType”对象没有属性“call”

2024-10-04 01:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力开发一个代理来查询史学家平台但在使用RPC查询方法时收到以下错误消息:AttributeError:“NoneType”对象没有属性“call”

class TCMAgent(Agent):
    def __init__(self, config_path, **kwargs):
        super(TCMAgent, self).__init__(**kwargs)
        self.config = utils.load_config(config_path)
        self.site = self.config.get('campus')
        self.building = self.config.get('building')
        self.unit = self.config.get('unit')
        self.subdevices = self.config.get('subdevices')
        self.subdevice = self.subdevices[0]
    ...
    ...


def test_api():
    '''To test Volttron APIs'''
    import os

    topic_tmpl = "{campus}/{building}/{unit}/{subdevice}/{point}"
    tcm = TCMAgent(os.environ.get('AGENT_CONFIG'))

    topic1 = topic_tmpl.format(campus='PNNL',
                               building='SEB',
                               unit='AHU1',
                               subdevice='VAV123A',
                               point='MaximumZoneAirFlow')
    result = tcm.vip.rpc.call('platform.historian',
                              'query',
                              topic=topic1,
                              count=20,
                              order="LAST_TO_FIRST").get(timeout=100)
    assert result is not None

if __name__ == '__main__':
    # Entry point for script
    #sys.exit(main())
    test_api()

更新以下错误跟踪:

^{pr2}$

Tags: testselfconfiggettopicdef错误unit
1条回答
网友
1楼 · 发布于 2024-10-04 01:27:19

你的代理不会连接到平台,也不会“启动”。这就是你们现在要处理的问题。我也不明白你是如何指定vip地址来连接到运行平台的。在

您需要先运行代理,然后才能允许它进行rpc调用。如下所示,以https://github.com/VOLTTRON/volttron/blob/develop/examples/SimpleForwarder/simpleforwarder/simpleforwarder.py#L118为例进行了修改。在

destination_vip="tcp://127.0.0.1:22916?serverkey=blah&publickey=wah&privatekey=nah

agent = TMCAgent(config_path=cfg_path, identity=tester, address=destination_vip)

event = gevent.event.Event()

# agent.core.run set the event flag to true when agent is running
gevent.spawn(agent.core.run, event)

# Wait until the agent is fully initialized and ready to 
# send and receive messages.
event.wait(timeout=3)

相关问题 更多 >