Sunday, September 28, 2008

Cron in Python

Cron jobs are traditional time based scheduling service on Unix platforms. For an introduction to cron jobs, go to: http://en.wikipedia.org/wiki/Crontab

At times, different software solutions may need to incorporate cron like functionality. I ended up doing the same recently. As usual, I first tried to find out if there are any existing implementations of cron available so that I do not have to re-invent the wheel again. I was looking for a Python based implementation and found the following: http://sourceforge.net/projects/pycron/ (Python Cron, Great Cron for Windows).

Although the title mentions Windows but the implementation can work on any Python based environment. The software is GPL licensed. Its a small and simple implementation of Cron in Python. The solution is easy to read and understand. It helped me understand some of the intricacies of cron implementation (like matching the cron table information with current time, taking care of system clock issues, etc.).

The algorithm is based on the initial simple implementation of cron by Brian Kernighan.
  1. Read the cron file
  2. Determine if any commands are to be run at the current date and time and if so, run them.
  3. Sleep for one minute
  4. Repeat from step 1.