Concurrency, Threading and race conditions with rospy

That’s a known (and IMO serious) bug: Epydoc not available on Focal -> missing Python docs for many Noetic core packages · Issue #2279 · ros/ros_comm · GitHub . Workaround: change noetic to melodic in the URL…

Other from that, I agree with @seth in all points.

In Python, you just have to be aware that there are actually two queues - the normal message queue (configured via queue_size) and the receive byte buffer size (configured via buff_size). Both of them play an important role in the behavior when callbacks take too long.