Agreed re. the first - I thought I should mention it as it might help someone.
I actually use the second approach all the time, sleeping for either 10 seconds or 240 seconds. The only problem is that occasionally the process may exit, e.g. certain errors not trapped, or a short PA outage. There have been discussions of how to mitigate this risk in various threads here, e.g. by starting the job as a Scheduled task quite frequently, but having it exit if it's already running. The art lies in how you detect the 'already running' state.