最近写了自动化需要下载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))
原文:https://www.cnblogs.com/chen-xia/p/13451777.html