tuoheng_algN/util/QueUtil.py

51 lines
1.5 KiB
Python

# -*- 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