Skip to content

Commit

Permalink
Support SIGHUP for immediate run
Browse files Browse the repository at this point in the history
  • Loading branch information
rycus86 committed Feb 25, 2018
1 parent e490608 commit 03ba969
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ def exit_app():
signal.signal(signal.SIGINT, lambda *x: exit_app())
signal.signal(signal.SIGTERM, lambda *x: exit_app())

signal.signal(signal.SIGHUP, scheduler.run_now)


def setup_metrics():
metrics_port = read_configuration('METRICS_PORT', default_config_path)
Expand Down
4 changes: 4 additions & 0 deletions src/scheduler/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ class Scheduler(object):
def schedule(self, func, *args, **kwargs):
raise NotImplementedError('%s.schedule not implemented' % type(self).__name__)

@abc.abstractmethod
def run_now(self):
raise NotImplementedError('%s.run_now not implemented' % type(self).__name__)

@abc.abstractmethod
def cancel(self):
raise NotImplementedError('%s.cancel not implemented' % type(self).__name__)
3 changes: 3 additions & 0 deletions src/scheduler/oneshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,8 @@ class OneShotScheduler(Scheduler):
def schedule(self, func, *args, **kwargs):
func(*args, **kwargs)

def run_now(self):
pass

def cancel(self):
exit(1)
3 changes: 3 additions & 0 deletions src/scheduler/repeat.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ def schedule(self, func, *args, **kwargs):
self.timer = threading.Timer(self.interval, self._run)
self.timer.start()

def run_now(self):
self._run()

def _run(self):
with self.lock:
if self.cancelled:
Expand Down
12 changes: 12 additions & 0 deletions tests/test_repeat_scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,15 @@ def test_repeats(self):
self.scheduler.cancel()

self.assertAlmostEqual(self.invocations, 5, delta=1)

def test_run_now(self):
self.scheduler = MockScheduler()
self.scheduler.time = 60

self.scheduler.schedule(self._invoke)

self.assertEqual(self.invocations, 0)

self.scheduler.run_now()

self.assertEqual(self.invocations, 1)

0 comments on commit 03ba969

Please sign in to comment.