# -*- coding: utf-8 -*- from time import time from traceback import format_exc from loguru import logger from enums.ExceptionEnum import ExceptionType from exception.CustomerException import ServiceException def get_no_block_queue(queue): try: return queue.get(block=False) except Exception: return None def put_queue(queue, result, block=True, timeout=None, is_ex=False): try: queue.put(result, block=block, timeout=timeout) except Exception: logger.error("添加队列异常:{}", format_exc()) if is_ex: raise ServiceException(ExceptionType.SERVICE_INNER_EXCEPTION.value[0], ExceptionType.SERVICE_INNER_EXCEPTION.value[1]) def put_queue_result(queue, result, block=True, timeout=None): try: queue.put(result, block=block, timeout=timeout) return True except Exception: logger.error("添加队列异常:{}", format_exc()) return False def clear_queue(queue): c_time = time() while True: if time() - c_time > 120: logger.error("清空队列失败, 情况队列超时!") raise ServiceException(ExceptionType.SERVICE_INNER_EXCEPTION.value[0], ExceptionType.SERVICE_INNER_EXCEPTION.value[1]) get_no_block_queue(queue) if queue.empty() or queue.qsize() == 0: break # try: # queue.get_nowait() # except Exception: # break