I just found a solution. I just stop the task every 5 seconds then in my cleanup function I just add it back to the taskMgr which restarts the task.frame timer. Is there a better way?
The magic is in returning task.again, which is similar to task.cont except that it means run the task again, not immediately, but after the same delay that ran it in the first place.