feat:增加多线程,查询房间占用时,使用多线程处理

This commit is contained in:
lei_y601
2025-07-23 14:25:38 +08:00
parent 53f53f91dc
commit 2b268d05a9

View File

@@ -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]