面试题答案
一键面试import time
import queue
class RequestHandler:
def __init__(self):
self.high_priority_queue = queue.PriorityQueue()
self.medium_priority_queue = queue.PriorityQueue()
def handle_request(self, request_type, priority, load):
if request_type == 'query' and priority == 'high':
if load < 60:
self._process_request_immediately(request_type, priority)
else:
self.high_priority_queue.put((1, (request_type, priority)))
elif request_type == 'update' and priority =='medium':
if load < 40:
self._process_request_immediately(request_type, priority)
elif 40 <= load <= 70:
time.sleep(5)
self._process_request_immediately(request_type, priority)
else:
self.medium_priority_queue.put((2, (request_type, priority)))
else:
# 其他请求类型和优先级组合的处理逻辑
self._handle_other_requests(request_type, priority, load)
def _process_request_immediately(self, request_type, priority):
print(f"立即处理请求: {request_type}, 优先级: {priority}")
def _handle_other_requests(self, request_type, priority, load):
print(f"处理其他请求: {request_type}, 优先级: {priority}, 负载: {load}")
# 示例使用
handler = RequestHandler()
handler.handle_request('query', 'high', 50)
handler.handle_request('update','medium', 50)
在上述代码中:
RequestHandler
类封装了请求处理的逻辑,包含两个优先级队列high_priority_queue
和medium_priority_queue
分别用于存储高优先级和中等优先级的请求。handle_request
方法根据请求类型、优先级和服务器负载进行不同的处理逻辑。- 使用字典或其他数据结构来优化
if - elif - else
逻辑是一种可行的思路,例如可以将请求类型和优先级的组合作为键,对应的处理函数作为值存储在字典中,在实际处理时通过字典查找直接调用相应的处理函数,这里由于条件较为复杂且有嵌套逻辑,暂未使用该优化方式,若有需要可进一步调整。