Difference in Waypoint Flight with Mission Planner and Dronekit

Hi all.
I’m using Dronekit Python for the control of my copter, which works somehow. Recently, I found that there is one strange behaviour. When I want my copter fly to a specific position I use something like the following

while True:
  if position_reached:
    print "waiting"

This works fine in SITL. However, when it comes to real flight scenarios it is not that reliable any more, i.e. the copter flies very smoothly sometimes and other times extremely slowly. When I use the Auto Mode/Flight Planning feature in the Mission Planner the copter always flys smoothly.
So what is the conceptional difference in sending waypoints using Dronekit and employing the Auto Mode? Anyone an idea?