背景
需求背景:
最近收到一个需求,需要为某个接口实现超时检测功能。由于计算量和服务问题,该接口调用返回的时间可能出现过长的情况。需求方希望设定一个超时参数,当函数调用时间超时则返回一个超时的json数据,未超时则正常返回数据。
最终我使用了多线程 + 队列Queue对需求进行了实现,故总结一下本次实现的方法和思路。
原始代码模拟
使用如下代码最简单地还原一下原始接口情景,该代码下,调用task()方法可能存在随机的5~20秒延时才能返回:
import time
import random
# 该接口调用时间可能为5秒到20秒,希望能有一个接口超时检测功能。
# 若延迟在10秒内,则返回正常信息;若延迟大于10秒,则立即返回一个超时的信息。
def task():
print("start task...")
start = time.time()
# 模拟任务随机耗时
time.sleep(random.randint(5, 20))
end = time.time()
print("该次接口调用耗时:{}s".format(end-start))
return {"status": "succeed"}
if __name__ == '__main__':
result = task()
print("返回结果为:{}".format(result))
结果示例