From 5235c3281a28d8ce4e0dc2d6672c00c6954bcfc6 Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Thu, 12 Nov 2020 12:32:16 +1100 Subject: [PATCH] segment_coverage: Allow setting of check interval via cli flag --- segment_coverage/segment_coverage/main.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/segment_coverage/segment_coverage/main.py b/segment_coverage/segment_coverage/main.py index 23d268f..44ea411 100644 --- a/segment_coverage/segment_coverage/main.py +++ b/segment_coverage/segment_coverage/main.py @@ -72,10 +72,8 @@ HOUR_FMT = '%Y-%m-%dT%H' class CoverageChecker(object): """Checks the segment coverage for a given channel in a a given directoy.""" - CHECK_INTERVAL = 60 #seconds between checking coverage - def __init__(self, channel, qualities, base_dir, first_hour, last_hour, - make_page, connection_string): + make_page, connection_string, check_interval): """Constructor for CoverageChecker. Creates a checker for a given channel with specified qualities.""" @@ -87,6 +85,7 @@ class CoverageChecker(object): self.last_hour = last_hour self.make_page = make_page self.db_manager = None if connection_string is None else database.DBManager(dsn=connection_string) + self.check_interval = check_interval self.stopping = gevent.event.Event() self.logger = logging.getLogger('CoverageChecker({})'.format(channel)) @@ -529,7 +528,7 @@ class CoverageChecker(object): if self.make_page: self.create_coverage_page(quality) - self.stopping.wait(common.jitter(self.CHECK_INTERVAL)) + self.stopping.wait(common.jitter(self.check_interval)) @argh.arg('channels', nargs='*', help='Channels to check coverage of') @@ -541,9 +540,10 @@ class CoverageChecker(object): @argh.arg('--connection-string', help='Postgres connection string, which is either a space-separated list of key=value pairs, or a URI like: postgresql://USER:PASSWORD@HOST/DBNAME?KEY=VALUE') @argh.arg('--metrics-port', help='Port for Prometheus stats. Default is 8006.') @argh.arg('--backdoor-port', help='Port for gevent.backdoor access. By default disabled.') +@argh.arg('--check-interval', help='How many seconds to wait in between doing checks.') def main(channels, base_dir='.', qualities='source', first_hour=None, last_hour=None, make_page=False, connection_string=None, - metrics_port=8006, backdoor_port=0): + metrics_port=8006, backdoor_port=0, check_interval=60): """Segment coverage service""" qualities = qualities.split(',') if qualities else [] @@ -562,7 +562,7 @@ def main(channels, base_dir='.', qualities='source', first_hour=None, for channel in channels: logging.info('Starting coverage checks {} with {} as qualities in {}'.format(channel, ', '.join(qualities), base_dir)) manager = CoverageChecker(channel, qualities, base_dir, first_hour, - last_hour, make_page, connection_string) + last_hour, make_page, connection_string, check_interval) managers.append(manager) workers.append(gevent.spawn(manager.run))