背景
最近寫了自動化需要下載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))
Ps:推薦使用第一種
