zoukankan      html  css  js  c++  java
  • python函数执行超时处理的两种方法

     

    背景

    最近写了自动化需要下载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:推荐使用第一种

  • 相关阅读:
    PHP程序十点未来的建议
    网站入侵思路
    SQL注入初探
    php安全学习笔记
    BLE协议分析
    调用NMAP批量扫描IP端口
    安卓系统手机目录
    xss绕过过滤方法
    xss测试用例
    python爬虫
  • 原文地址:https://www.cnblogs.com/chen-xia/p/13451777.html
Copyright © 2011-2022 走看看