当rospy.is_shutdown时,停止serve_forever



我有下面的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时不会停止。

如何合理地结合这两个模块?

我相信您可以通过在调用它的函数上注册套接字close函数作为一个rospy关闭处理程序来停止。

   def shutdown_hook():
       print "Trying to shut down server"
       httpd.shutdown()
   rospy.on_shutdown(shutdown_hook)

如果shutdown()不工作,尝试httpd.socket.close()

相关内容

  • 没有找到相关文章

最新更新