feat:增加多线程,查询房间占用时,使用多线程处理
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from copy import deepcopy
|
||||
from datetime import datetime, timedelta
|
||||
import json
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
from decouple import config
|
||||
import re
|
||||
@@ -130,7 +131,20 @@ def query_room_info(data: dict, params: dict) -> str:
|
||||
logger.exception("location: query_room_info => {0}".format(str(ex)))
|
||||
return error_respones.format("查询会议室信息")
|
||||
|
||||
|
||||
executor = ThreadPoolExecutor(thread_name_prefix='pool_time_over_leap_check',max_workers=config('PROCESS_ROOM_TIME_OVER_POOL_SIZE',default=20,cast=int))
|
||||
'''
|
||||
多线程任务,判断房间该时段是否被占用
|
||||
'''
|
||||
def executor_task_of_time_over_check(start_time,end_time,meeting_info)->str|None:
|
||||
logger.info("current meetings {0}".format(meeting_info))
|
||||
for m in meeting_info['meetingDTOList']:
|
||||
m_start_time = getinfo.standard_format(m['startTimeStamp'])
|
||||
m_end_time = getinfo.standard_format(m['endTimeStamp'])
|
||||
logger.info("m_start_time:{0},m_end_time:{1}".format(m_start_time, m_end_time))
|
||||
if getinfo.is_time_overlap([start_time, end_time], [m_start_time, m_end_time]):
|
||||
logger.info("会议{0}发生时间冲突".format(m))
|
||||
return meeting_info.get('meetingRoomId')
|
||||
return None
|
||||
'''
|
||||
查询可用会议室信息,
|
||||
包含过滤掉未启用的会议室
|
||||
@@ -172,16 +186,12 @@ def query_avali_room(data: dict,params: dict,start_time=None,end_time=None) -> s
|
||||
if not isinstance(booking_info, dict):
|
||||
raise Exception(f"query_avali_room: 已预定会议信息获取不符合预期 => {booking_info}")
|
||||
booking_meeting = booking_info['data']
|
||||
for meetings in booking_meeting:
|
||||
logger.info("current meetings {0}".format(meetings))
|
||||
for m in meetings['meetingDTOList']:
|
||||
m_start_time = getinfo.standard_format(m['startTimeStamp'])
|
||||
m_end_time = getinfo.standard_format(m['endTimeStamp'])
|
||||
logger.info("m_start_time:{0},m_end_time:{1}".format(m_start_time, m_end_time))
|
||||
if getinfo.is_time_overlap([start_time, end_time], [m_start_time, m_end_time]):
|
||||
logger.info("会议{0}发生时间冲突".format(m))
|
||||
unavali_room.append(meetings['meetingRoomId'])
|
||||
break
|
||||
if booking_meeting:
|
||||
#多线程并发判断
|
||||
future_task_list=[executor.submit(executor_task_of_time_over_check,start_time,end_time,b) for b in booking_meeting]
|
||||
for f in future_task_list:
|
||||
if f.result():
|
||||
unavali_room.append(f.result())
|
||||
|
||||
logger.info("所有发生时间冲突的会议室 => {0}".format(unavali_room))
|
||||
avali_room = [room for room in meeting_room if room['id'] not in unavali_room]
|
||||
|
||||
Reference in New Issue
Block a user