def enqueue_worker(): """A worker to enqueue matches""" while not manager.is_complete(): # try to get next match to queue, error if there is none try: match = ready.get(timeout=TOURNAMENT_WORKER_TIMEOUT) except queue.Empty: logging.info('Found no match ready to queue') continue with manager.lock: manager.external_ids[match.internal_id] = [None] manager.replays[match.internal_id] = [None] while True: try: logging.info('Sending match: map={} | {}'.format(None, match)) manager.external_ids[match.internal_id] = util.enqueue({ 'type': 'tour_scrimmage', 'tournament_id': tournament_id, 'player1': match.player1_pk, # player 1 is always white 'player2': match.player2_pk }) assert (manager.external_ids[match.internal_id] != None) except: logging.error('Error enqueueing match from server: map={} | {}'.format(None, match)) time.sleep(TOURNAMENT_WORKER_TIMEOUT) else: break # tell other thread to wait for results on this game monitor.put(match)
def enqueue_worker(): """A worker to enqueue matches""" while not manager.is_complete(): try: match = ready.get(timeout=TOURNAMENT_WORKER_TIMEOUT) except queue.Empty: logging.info('Found no match ready to queue') continue with manager.lock: manager.external_ids[match.internal_id] = [None] * len(maps[match.round_name]) manager.replays[match.internal_id] = [None] * len(maps[match.round_name]) for index, one_map in enumerate(maps[match.round_name]): while True: try: logging.info('Sending match: map={} | {}'.format(one_map, match)) manager.external_ids[match.internal_id][index] = util.enqueue({ 'type': 'tour_scrimmage', 'tournament_id': tournament_id, 'player1': match.player1_pk if index % 2 == 0 else match.player2_pk, 'player2': match.player2_pk if index % 2 == 0 else match.player1_pk, 'map_ids': one_map }) assert (manager.external_ids[match.internal_id][index] != None) except: logging.error('Error enqueueing match: map={} | {}'.format(one_map, match)) time.sleep(TOURNAMENT_WORKER_TIMEOUT) else: break monitor.put(match)
def worker(): while True: scrim = scrim_queue.get() logging.info('Enqueueing scrimmage: {}'.format(scrim)) result = util.enqueue({ 'type': 'scrimmage', 'player1': scrim['player1'], 'player2': scrim['player2'] }) if result == None: scrim_queue.put(scrim)
def test_enqueue(self): a = [] util.enqueue(a, 1) self.assertEqual(a, [1])