Когда у вас есть агент, который собирается зарегистрировать свою конечную точку, вы должны сделать это во время сигнала onstart. Из центрального вещества вольтрона было извлечено следующее. Он показывает, как регистрировать конечную точку, которая является динамической (использует volttron rpc в качестве конечной точки), а также статическую (где html просто используется). Я удалил ненужные биты для этого примера.
onstart volttron central code
Для ясности MASTER_WEB и VOLTTRON_CENTRAL уникальные идентификаторы для этих конкретных агентов, работающих на экземпляре volttron.
@Core.receiver('onstart')
def _starting(self, sender, **kwargs):
""" Starting of the platform
:param sender:
:param kwargs:
:return:
"""
...
# Registers dynamic route.
self.vip.rpc.call(MASTER_WEB, 'register_agent_route',
r'^/jsonrpc.*',
self.core.identity,
'jsonrpc').get(timeout=30)
# Registers static route.
self.vip.rpc.call(MASTER_WEB, 'register_path_route', VOLTTRON_CENTRAL,
r'^/.*', self._webroot).get(timeout=30)
С тех пор, как вы добавили маршрут onstart, вы также должны удалить его, когда агент остановлен. onstop referenced code
@Core.receiver("onstop")
def stopping(self, sender, **kwargs):
'''
Release subscription to the message bus because we are no longer able
to respond to messages now.
'''
try:
# unsubscribes to all topics that we are subscribed to.
self.vip.pubsub.unsubscribe(peer='pubsub', prefix=None, callback=None)
except KeyError:
# means that the agent didn't start up properly so the pubsub
# subscriptions never got finished.
pass
Thanks Craig. Я попробую и вернусь к этому позже. – HNGO
Если есть 10 различных приложений, имеющих 10 различных пользовательских интерфейсов, поддерживает ли этот подход слишком много бэкэнд-агентов, маршрутов, внешних ресурсов? – HNGO
Эта регистрация маршрутов - это стандартный способ делать вещи. Это не ново. Внешние ресурсы должны и должны быть на стороне клиента. – Craig