Unable to start isaac sim to play the animation after it has been stopped via python

Hi, I have a simple code wherein I am trying to stop a simulation and then run the simulation using omni.timeline.get_interface()

Unfortunately after I stop the simulation, timeline.play() function call is unable to start the simulation again. Is this behavior expected? I am using version 2023.1.1

This is the code:

    import rclpy
    from rclpy.node import Node
    from rosgraph_msgs.msg import Clock
    from omni.isaac.kit import SimulationApp
    simulation_app = SimulationApp({"headless": False})
    from omni.isaac.core import World
    from omni.isaac.core.utils.stage import open_stage
    from omni.isaac.core.utils.extensions import enable_extension
    import omni.timeline
    import time

    enable_extension("omni.isaac.ros2_bridge")

    class StartSimulationService(Node):
        def __init__(self):
            super().__init__('start_simulation_service')
            self.current_time = 0.0
            self.world = None
            self.timeline = None
            
            # Initialize your simulation here
            self.init_simulation()
            self.stopped = False


        def init_simulation(self):
            # Initialize your Isaac Sim simulation
            self.world = World()
            self.world.scene.add_default_ground_plane()
            self.world.reset()
            self.timeline = omni.timeline.get_timeline_interface()
            # self.timeline.play()
            self.timeline.stop()
            time.sleep(10)
            
            print("Simulation initialized")
            print(self.timeline.is_playing())

            # Start the simulation loop as part of the node's callback
            self.timer = self.create_timer(0.01, self.run_simulation)

        def run_simulation(self):
            
            if self.timeline.is_playing():
                # render the simulation
                print("Rendering")
                self.world.step(render=True)

            else:
                print("Starting simulation")
                self.timeline.play()
            

                # Insert your simulation logic here

    def main(args=None):
        rclpy.init(args=args)
        start_service = StartSimulationService()
        rclpy.spin(start_service)
        start_service.destroy_node()
        rclpy.shutdown()

    if __name__ == '__main__':
        main()