class PypoPush(Thread): def __init__(self, q, telnet_lock): Thread.__init__(self) self.api_client = api_client.AirtimeApiClient() self.queue = q self.telnet_lock = telnet_lock self.pushed_objects = {} self.logger = logging.getLogger('push') self.current_prebuffering_stream_id = None self.queue_id = 0 self.future_scheduled_queue = Queue() self.pypo_liquidsoap = PypoLiquidsoap(self.logger, telnet_lock,\ LS_HOST, LS_PORT) self.plq = PypoLiqQueue(self.future_scheduled_queue, \ self.pypo_liquidsoap, \ self.logger) self.plq.daemon = True self.plq.start() def main(self): loops = 0 heartbeat_period = math.floor(30 / PUSH_INTERVAL) media_schedule = None while True: try: media_schedule = self.queue.get(block=True) except Exception, e: self.logger.error(str(e)) raise else: self.logger.debug(media_schedule) #separate media_schedule list into currently_playing and #scheduled_for_future lists currently_playing, scheduled_for_future = \ self.separate_present_future(media_schedule) self.pypo_liquidsoap.verify_correct_present_media( currently_playing) self.future_scheduled_queue.put(scheduled_for_future) if loops % heartbeat_period == 0: self.logger.info("heartbeat") loops = 0 loops += 1
class PypoPush(Thread): def __init__(self, q, telnet_lock): Thread.__init__(self) self.api_client = api_client.AirtimeApiClient() self.queue = q self.telnet_lock = telnet_lock self.pushed_objects = {} self.logger = logging.getLogger("push") self.current_prebuffering_stream_id = None self.queue_id = 0 self.future_scheduled_queue = Queue() self.pypo_liquidsoap = PypoLiquidsoap(self.logger, telnet_lock, LS_HOST, LS_PORT) self.plq = PypoLiqQueue(self.future_scheduled_queue, self.pypo_liquidsoap, self.logger) self.plq.daemon = True self.plq.start() def main(self): loops = 0 heartbeat_period = math.floor(30 / PUSH_INTERVAL) media_schedule = None while True: try: media_schedule = self.queue.get(block=True) except Exception, e: self.logger.error(str(e)) raise else: self.logger.debug(media_schedule) # separate media_schedule list into currently_playing and # scheduled_for_future lists currently_playing, scheduled_for_future = self.separate_present_future(media_schedule) self.pypo_liquidsoap.verify_correct_present_media(currently_playing) self.future_scheduled_queue.put(scheduled_for_future) if loops % heartbeat_period == 0: self.logger.info("heartbeat") loops = 0 loops += 1
def __init__(self, q, telnet_lock): Thread.__init__(self) self.api_client = api_client.AirtimeApiClient() self.queue = q self.telnet_lock = telnet_lock self.pushed_objects = {} self.logger = logging.getLogger('push') self.current_prebuffering_stream_id = None self.queue_id = 0 self.future_scheduled_queue = Queue() self.pypo_liquidsoap = PypoLiquidsoap(self.logger, telnet_lock,\ LS_HOST, LS_PORT) self.plq = PypoLiqQueue(self.future_scheduled_queue, \ self.pypo_liquidsoap, \ self.logger) self.plq.daemon = True self.plq.start()
def __init__(self, q, telnet_lock): Thread.__init__(self) self.api_client = api_client.AirtimeApiClient() self.queue = q self.telnet_lock = telnet_lock self.pushed_objects = {} self.logger = logging.getLogger("push") self.current_prebuffering_stream_id = None self.queue_id = 0 self.future_scheduled_queue = Queue() self.pypo_liquidsoap = PypoLiquidsoap(self.logger, telnet_lock, LS_HOST, LS_PORT) self.plq = PypoLiqQueue(self.future_scheduled_queue, self.pypo_liquidsoap, self.logger) self.plq.daemon = True self.plq.start()
ls_port = config['ls_port'] liquidsoap_startup_test() if options.test: g.test_api() sys.exit(0) ReplayGainUpdater.start_reply_gain(api_client) SilanAnalyzer.start_silan(api_client, logger) pypoFetch_q = Queue() recorder_q = Queue() pypoPush_q = Queue() pypo_liquidsoap = PypoLiquidsoap(logger, telnet_lock,\ ls_host, ls_port) """ This queue is shared between pypo-fetch and pypo-file, where pypo-file is the consumer. Pypo-fetch will send every schedule it gets to pypo-file and pypo will parse this schedule to determine which file has the highest priority, and retrieve it. """ media_q = Queue() pmh = PypoMessageHandler(pypoFetch_q, recorder_q, config) pmh.daemon = True pmh.start() pfile = PypoFile(media_q, config) pfile.daemon = True pfile.start()