Browse Source

support for crontab

Davide Alberani 6 years ago
parent
commit
b8c2649b69
1 changed files with 6 additions and 1 deletions
  1. 6 1
      diffido.py

+ 6 - 1
diffido.py

@@ -7,6 +7,7 @@ import logging
 
 from tornado.ioloop import IOLoop
 # from lxml.html.diff import htmldiff
+from apscheduler.triggers.cron import CronTrigger
 from apscheduler.schedulers.tornado import TornadoScheduler
 from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
 
@@ -71,12 +72,16 @@ def scheduler_update(scheduler, id_):
     trigger = schedule.get('trigger')
     if trigger not in ('interval', 'cron'):
         return
-    args = {'trigger': trigger}
+    args = {}
     if trigger == 'interval':
+        args['trigger'] = 'interval'
         for unit in 'weeks', 'days', 'hours', 'minutes', 'seconds':
             if 'interval_%s' % unit not in schedule:
                 continue
             args[unit] = int(schedule['interval_%s' % unit])
+    elif trigger == 'cron':
+        cron_trigger = CronTrigger.from_crontab(schedule.get('cron_crontab'))
+        args['trigger'] = cron_trigger
     scheduler.add_job(run_job, id=id_, replace_existing=True, kwargs={'id_': id_}, **args)