def start_workers(): # Launch worker threads to operate on queue logger.info('Starting %s worker threads' % cf.num_workers) for i in range(cf.num_workers): t = threading.Thread(target=processor, kwargs={'worker_id': i}) t.daemon = True t.start() # If the config file has a [cron] section, the key names therein are # functions from 'myfuncs.py' which should be invoked periodically. # The key's value (must be numeric!) is the period in seconds. if cf.has_section('cron'): for name, val in cf.items('cron'): try: func = load_function(name=name, filepath=cf.functions) cron_options = parse_cron_options(val) interval = cron_options['interval'] logger.debug('Scheduling function "{name}" as periodic task ' \ 'to run each {interval} seconds via [cron] section'.format(name=name, interval=interval)) service = make_service(mqttc=mqttc, name='mqttwarn.cron') ptlist[name] = PeriodicThread(callback=func, period=interval, name=name, srv=service, now=asbool(cron_options.get('now'))) ptlist[name].start() except AttributeError: logger.error("[cron] section has function [%s] specified, but that's not defined" % name) continue
def test_parse_cron_options(): assert parse_cron_options('60; now=true') == {'now': 'true', 'interval': 60.0}
def test_parse_cron_options(): assert parse_cron_options("60; now=true") == { "now": "true", "interval": 60.0 }