Yesterday, Marco Arment asked this question on Twitter:
"I’m not tied to setTimeout/setInterval, but how else do people use a persistent Node process to run functions every so often?"
Last week I shipped a piece of software that's the perfect answer to this question, Noderunner.
Put the scripts you want to run in specially named folders, everySecond, everyMinute, everyHour, overnight, and Noderunner runs them when it's their time. The scripts aren't cached, so you can change them, add or delete, without restarting the app.
I made it because I needed it.