如果服务之间存在依赖关系,NaoQi 会以什么顺序杀死这些服务?

In what order NaoQi will kill the services if there is a dependence between them?

例如,我有一个 RequestService 负责发出请求,LogHandler 加载了 /home/nao/naoqi/preferences/autoload.iniLogHandler 的想法是处理所有日志(在 LogManager 服务的帮助下)并使用此日志向远程服务器发出请求。此外,LogHandler 处理系统启动和系统关闭时的事件。为了处理关闭,我使用了在 app.run() 方法之后触发的逻辑(我使用了 )。

问题是:如果LogHandler依赖RequestService,能不能保证OS先杀LogHandler再杀RequestService或者存在杀死 RequestService 的风险 - 在这种情况下,LogHandler 将无法向远程服务器发送请求。在这种情况下,以独立于 RequestService?

的方式实施 LogHandler 可能是更好的主意
# init of the LogHandler
app = qi.Application(url=ROBOT_URL)
app.start()
session = app.session

request_service = session.service("request_service")

on_os_start(request_service)
...
app.run()
...
on_os_shutdown(request_service)
app.stop()

系统关机时可以依赖request_service吗?

不,没有 "official" 服务关闭顺序,因此即使您的服务按特定顺序关闭,也不能保证它们会在不同的上下文或系统版本中继续这样做。

最好的办法是减少服务之间的依赖关系,尤其是在启动和关闭等关键时刻。所以回答你的问题...

In this scenario may be a better idea to implement the LogHandler in such a way as to be independent from the RequestService?

...是的,这是一个更好的主意。

我什至不确定你为什么要在不同的服务中使用 requests_service(或者这只是一个例子?)。我有时做的是拥有提供有用功能的辅助 python 库,并从多个不同的服务导入相同的库;这样我就可以在没有代码重复的情况下共享功能(不过,除了代码重复之外,您可能还有其他原因想要集中处理您的请求)。