diff --git a/celerybeatmongo/schedulers.py b/celerybeatmongo/schedulers.py index 038d0fb..2b56c6c 100644 --- a/celerybeatmongo/schedulers.py +++ b/celerybeatmongo/schedulers.py @@ -89,6 +89,8 @@ def save(self): self._task.save(save_condition={}) except Exception: get_logger(__name__).error(traceback.format_exc()) + except mongoengine.errors.NotUniqueError: + pass class MongoScheduler(Scheduler): @@ -109,19 +111,19 @@ def __init__(self, *args, **kwargs): if hasattr(current_app.conf, "CELERY_MONGODB_SCHEDULER_URL"): self._mongo = mongoengine.connect(db, host=current_app.conf.CELERY_MONGODB_SCHEDULER_URL) get_logger(__name__).info("backend scheduler using %s/%s:%s", - current_app.conf.CELERY_MONGODB_SCHEDULER_URL, - db, self.Model._get_collection().name) + current_app.conf.CELERY_MONGODB_SCHEDULER_URL, + db, self.Model._get_collection().name) else: self._mongo = mongoengine.connect(db) get_logger(__name__).info("backend scheduler using %s/%s:%s", - "mongodb://localhost", - db, self.Model._get_collection().name) + "mongodb://localhost", + db, self.Model._get_collection().name) self._schedule = {} self._last_updated = None Scheduler.__init__(self, *args, **kwargs) self.max_interval = (kwargs.get('max_interval') - or self.app.conf.CELERYBEAT_MAX_LOOP_INTERVAL or 5) + or self.app.conf.CELERYBEAT_MAX_LOOP_INTERVAL or 5) def setup_schedule(self): pass @@ -149,4 +151,11 @@ def schedule(self): def sync(self): for entry in self._schedule.values(): - entry.save() + try: + entry.kwargs.update({ + 'date_ref': datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%f") + }) + + entry.save() + except mongoengine.errors.NotUniqueError: + pass