Initial implementation of a cron plugin: supports scheduling of one-off events with a time delta
Add scheduleAt method to cron, to allow scheduling by datetimes
Initial implementation of regular events
Everything is running in Twisted's thread now, so no need for locks
Better handling of exceptions in cron callbacks
Improve documentation
Fix starting of regular events (albeit in an ugly way)
Simplify plugin interface to cron: restrict it to just that plugin's events
Remove Cron::scheduleAt
Unify Cron::schedule and Cron::scheduleEvery
Fix Cron::setup to use schedule instead of scheduleAt
Rename PluginCron::schedule to PluginCron::after, to fit in with PluginCron::at and PluginCron::every
Raise an exception in Cron::schedule if two events with the same name from the same plugin are registered
Make Cron plugin-agnostic, and handle the name-mangling in PluginCron
Prettify Cron::setup_regular a bit
The argument to the DuplicateNameException is now just the name
Callbacks passed to Cron::schedule now get passed the time at which they were scheduled to be called at.
Don't print out the callback in a Cron::_runcb error log
Fix computation of when in Cron::setup
Completely change representation of tasks in cron: now pass a method name and some args to call it with when the time is up, and there is just one repeating task (the scheduler) which handles everything. This is to allow saving things to the database, although that isn't done yet.