cron
is clearly a great choice for many purposes. However it doesn't create a service or daemon as you requested in the OP. cron
just runs jobs periodically (meaning the job starts and stops), and no more often than once / minute. There are issues with cron
-- for example, if a prior instance of your script is still running the next time the cron
schedule comes around and launches a new instance, is that OK? cron
doesn't handle dependencies; it just tries to start a job when the schedule says to.
If you find a situation where you truly need a daemon (a process that never stops running), take a look at supervisord
. It provides a simple way to wrapper a normal, non-daemonized script or program and make it operate like a daemon. This is a much better way than creating a native Python daemon.