ANN: crone - cron in Erlang (sort of)
Chris Pressey
cpressey@REDACTED
Thu Jul 4 09:19:45 CEST 2002
Hi all.
Realizing I'd soon need something like it, and surprised to not find
anything existing quite like it, I wrote this little application in
Erlang. crone is a task scheduler, something like cron, but also a bit
different. As a testament to the ease of programming in Erlang, this
program took only one day to write, once the idea had gelled.
For each task you wish to schedule, crone creates a process. Each process
calculates the time until the task will next be run, calls timer:sleep/1
for that duration, runs the task, and repeats.
There is no configuration file, instead, crone is started with a list of
tasks to schedule, e.g.:
crone:start([
{{daily, {every, {5 min}, {between, {8, am}, {5, pm}}}},
{funky_db, dump_to_file, [my_db, "report.txt"]}},
{{daily, [{1, pm}, {4, 30, am}]},
{funky_db, rotate_log, ["foo.log"]}},
{{weekly, sun, {5, am}},
{os, cmd, ["backup important-files"]}},
{{monthly, 1, {2, am}},
{funky_db, monthly_maintenance, []}}
]).
It raises the question: just how large can the argument to timer:sleep/1
be? Scheduling a task on a monthly basis means sleeping for potentially
hundreds of hours (that is, billions of milliseconds.) How much
inaccuracy should be expected to creep in over such a long wait?
Anyway, if I get some positive feedback on this, I'll submit it to User
Contributions... :)
-Chris
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: crone.erl
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20020704/b801861e/attachment.ksh>
More information about the erlang-questions
mailing list