如果服务之间存在依赖关系,NaoQi 会以什么顺序杀死这些服务?
In what order NaoQi will kill the services if there is a dependence between them?
例如,我有一个 RequestService
负责发出请求,LogHandler
加载了 /home/nao/naoqi/preferences/autoload.ini
。 LogHandler
的想法是处理所有日志(在 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 库,并从多个不同的服务导入相同的库;这样我就可以在没有代码重复的情况下共享功能(不过,除了代码重复之外,您可能还有其他原因想要集中处理您的请求)。
例如,我有一个 RequestService
负责发出请求,LogHandler
加载了 /home/nao/naoqi/preferences/autoload.ini
。 LogHandler
的想法是处理所有日志(在 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 库,并从多个不同的服务导入相同的库;这样我就可以在没有代码重复的情况下共享功能(不过,除了代码重复之外,您可能还有其他原因想要集中处理您的请求)。