背景 最近写了自动化需要下载apk,但有时候部分包下载很慢,影响整体测试时间,所有需要设定下载超时自动退出。 方法一: 通过func_timeout模块的@func_set_timeout()来实现 步骤: 1.安装
背景
最近写了自动化需要下载apk,但有时候部分包下载很慢,影响整体测试时间,所有需要设定下载超时自动退出。
方法一:
通过func_timeout模块的@func_set_timeout()来实现
步骤:
1.安装 pip install func_timeout
2.不多说了直接上代码
#_________________________________方式1:通过func_timeout装饰器来解决函数执行超时______________________________________________from func_timeout import func_set_timeout
import func_timeout
@func_set_timeout(3)#设定函数超执行时间_
def task():
print('hello world')
time.sleep(5)
return '执行成功_未超时'
if __name__ == '__main__':
try:
print(task())
#若调用函数超时自动走异常(可在异常中写超时逻辑处理)
except func_timeout.exceptions.FunctionTimedOut:
print('执行函数超时')
方法二:
通过eventlet模块来实现
步骤:
1.安装 pip install eventlet
import eventlet#导入eventlet这个模块###########普通方式###########################
eventlet.monkey_patch()#必须加这条代码
with eventlet.Timeout(5,False):#设置超时时间为5秒
time.sleep(4)
print('没有跳过这条输出')
print('跳过了输出')
###########函数方式#######################
def timeou(name,_time):
eventlet.monkey_patch()#必须加这条代码
with eventlet.Timeout(_time,False):#设置超时间
if isinstance(name,str):
print('name为字符串类型_值是{}'.format(name))
return 'str'
else:
print('name类型为:{}'.format(eval(str(type(name)).split()[1][:-1])))
return eval(str(type(name)).split()[1][:-1])
print('不好意思函数调用超时')
if __name__ == '__main__':
print(timeou('你好靓女!',3))