I have developed a helper library for rospy that uses Python decorators to abstract a bit from publishers and subscribers. You are able to instantiate publishers and subscribers by decorating functions that either return or receive ROS messages. I also wrap the running and instantiating of the ROS node by specifying an entry point for the node that will be called in a separate thread at a given frequency. Also, for more convenience, I provide decorators for classes that use the names of the parameters to automatically lookup parameters from the Parameter Server and instantiate the class with the collected parameters.
Check it out: http://wallarelvo.github.io/roshelper/