So there are a few scheduling libraries around, I wanted one for cron-like job scheduling and my options were quite limited, there are things like clj-cronlike and quartzite but I found the syntax quite clunky and didn't like the central stateful scheduler idea. There are also things like at-at, but that's more for events recurring over seconds/minutes or one-shot events, so that was out too.
In the end I wrote my own library. It's tiny (~60 lines) and does one task quite well. It's modelled after futures, and in fact returns a future, so use it in the same places/way you might use a future, but for recurring events. To schedule things, it's like a cron setup (so by default fires every minute of every hour of every day...) but you can pass a map of times when it should fire, so for example {:minute [0 15 30 45] :day :tue} will fire every 15 minutes on a tuesday where {:hour 9} will fire every minute from 9-10am every day. Beyond that you simply call schedule with pairs of schedule maps to functions which should fire. Example: => (def my-running-scheduler (schedule {:hour 12 :minute [0 15 30 45]} my-function {:hour (range 0 24 6) :minute 0 :day [:sat :sun]} batch-job)) ... => (future-cancel my-running-scheduler) Simple as that. Like I say, this was to scratch my own itch, but if anyone else finds it useful, great. If it nearly does what you want but not quite... hey, it's only 60 lines, fork it/fix it. If anyone has suggestions for features, bugfixes or other libraries I should be contributing this code to instead, that would be useful knowledge too. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en