У меня есть следующая программа Python для запуска HTTP-сервера и узла ROS.
httpd = ThreadingHttpServer()
rospy.init_node('server')
rospy.on_shutdown(httpd.shutdown)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
Я хочу, чтобы программа завершилась
- когда я вызываю
httpd.shutdown()
(например, после получения команды/kill
), - когда ROS закрывается (т.е. если
rospy.is_shutdown()
) и - когда я нажимаю Ctrl+C (это наименее важно).
Каким-то образом я изо всех сил пытаюсь распознать отключение ROS, хотя я пробовал rospy.on_shutdown()
и, альтернативно, собственный цикл while
, вызывающий httpd.handle_request()
.
В текущей версии узел (начиная с rosrun
) не останавливается при завершении работы roscore
.
Как я могу разумно объединить эти два модуля?