add base lock backend class
add cache job lock backend, copied from the original lock procedure
add file lock backend that uses lockfiles to prevent paralle run of cron job
replace old cron job lock with new procedure that uses configurable backends
remove unneeded imports from ./management/commands/runcrons.py
make CronJobManager be a context manager. This simplifies it's usage and allows to log all errors into db.
move cron job lock into CronJobManager.run
move cron job lock into CronJobManager.run
use CronJobManage as a context manager at runcrons management command
fix cron job locking backends to suit CronJobManager's needs. Return lock fail messages instead of printing them directly
fix cron job FailedRunsNotificationCronJob to import get_class routine from new place
return use of CRON_CACHE config variable. Need to commit it in a separate commits bunch.
fix job db logging, put record only if job need to run.
fill the code field in CronJobLog after instantiating the job
(not before) to allow jobs to modify their code in runtime
Merge branch 'lock-backends'