|
@@ -132,7 +132,7 @@ class Scheduler(UserDict):
|
|
|
Entry = ScheduleEntry
|
|
|
|
|
|
def __init__(self, schedule=None, logger=None, max_interval=None,
|
|
|
- app=None, Publisher=None, **kwargs):
|
|
|
+ app=None, Publisher=None, lazy=False, **kwargs):
|
|
|
UserDict.__init__(self)
|
|
|
if schedule is None:
|
|
|
schedule = {}
|
|
@@ -142,8 +142,9 @@ class Scheduler(UserDict):
|
|
|
self.logger = logger or self.app.log.get_default_logger(
|
|
|
name="celery.beat")
|
|
|
self.max_interval = max_interval or conf.CELERYBEAT_MAX_LOOP_INTERVAL
|
|
|
- self.setup_schedule()
|
|
|
self.Publisher = Publisher or self.app.amqp.TaskPublisher
|
|
|
+ if not lazy:
|
|
|
+ self.setup_schedule()
|
|
|
|
|
|
def maybe_due(self, entry, publisher=None):
|
|
|
is_due, next_time_to_run = entry.is_due()
|
|
@@ -343,16 +344,22 @@ class Service(object):
|
|
|
self._shutdown.set()
|
|
|
wait and self._stopped.wait() # block until shutdown done.
|
|
|
|
|
|
+ def get_scheduler(self, lazy=False):
|
|
|
+ filename = self.schedule_filename
|
|
|
+ scheduler = instantiate(self.scheduler_cls,
|
|
|
+ app=self.app,
|
|
|
+ schedule_filename=filename,
|
|
|
+ logger=self.logger,
|
|
|
+ max_interval=self.max_interval,
|
|
|
+ lazy=lazy)
|
|
|
+ if not lazy:
|
|
|
+ scheduler.update_from_dict(self.schedule)
|
|
|
+ return scheduler
|
|
|
+
|
|
|
@property
|
|
|
def scheduler(self):
|
|
|
if self._scheduler is None:
|
|
|
- filename = self.schedule_filename
|
|
|
- self._scheduler = instantiate(self.scheduler_cls,
|
|
|
- app=self.app,
|
|
|
- schedule_filename=filename,
|
|
|
- logger=self.logger,
|
|
|
- max_interval=self.max_interval)
|
|
|
- self._scheduler.update_from_dict(self.schedule)
|
|
|
+ self._scheduler = self.get_scheduler()
|
|
|
return self._scheduler
|
|
|
|
|
|
|