zoukankan      html  css  js  c++  java
  • requests获取响应时间(elapsed)与超时(timeout)、小数四舍五入

    前言

    requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的。
    如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间

    elapsed官方文档

    1. elapsed方法的官方文档地址:http://cn.python-requests.org/zh_CN/latest/api.html#requests.Response

    elapsed里面几个方法介绍

    total_seconds 总时长,单位秒
    
    days 以天为单位
    
    microseconds (>= 0 and less than 1 second) 获取微秒部分,大于0小于1秒
    
    seconds Number of seconds (>= 0 and less than 1 day) 秒,大于0小于1天
    
    max = datetime.timedelta(999999999, 86399, 999999) 最大时间
    
    min = datetime.timedelta(-999999999) 最小时间
    
    resolution = datetime.timedelta(0, 0, 1) 最小时间单位

    获取响应时间

    1.获取elapsed不同的返回值

    import requests
    r = requests.get("https://home.cnblogs.com/u/lixy-88428977/")
    print("elapsed: %s" % r.elapsed)
    print("total_seconds: %s" % r.elapsed.total_seconds())
    print("microseconds: %s" % r.elapsed.microseconds)
    print("seconds: %s" % r.elapsed.seconds)
    print("days: %s" % r.elapsed.days)
    print("max: %s" % r.elapsed.max)
    print("min: %s" % r.elapsed.min)
    print("resolution: %s" % r.elapsed.resolution)

    所以获取响应时间的正确姿势应该是:r.elapsed.total_seconds(),单位是s

    timeout超时

    1.如果一个请求响应时间比较长,不能一直等着,可以设置一个超时时间,让它抛出异常

    2.如下请求,设置超时为0.5s,那么就会抛出这个异常:requests.exceptions.ConnectTimeout: HTTPConnectionPool

    import requests
    r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1)
    print("elapsed: %s" % r.elapsed)
    print("total_seconds: %s" % r.elapsed.total_seconds())
    print("microseconds: %s" % r.elapsed.microseconds)

    小数点后取2位(四舍五入)以及取2位(四舍五不入)的方法

    一.小数点后取2位(四舍五入)的方法

    方法一:round()函数

    import requests
    r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1)
    time = r.elapsed.total_seconds()
    print("原始数据: %s" % time)
    print(round(time, 3))

    方法二:’%.2f’ %f 方法

    import requests
    r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1)
    time = r.elapsed.total_seconds()
    print("原始数据: %s" % time)
    print('%.2f' % time)

    方法三:Decimal()函数

    import requests
    from decimal import Decimal
    
    r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1)
    time = r.elapsed.total_seconds()
    print("原始数据: %s" % time)
    
    a = Decimal(time).quantize(Decimal('0.00'))
    print(a)

    二.小数点后取2位(四舍五不入)的方法

    import requests
    def get_two_float(f_str, n):
        f_str = str(f_str)      # f_str = '{}'.format(f_str) 也可以转换为字符串
        a, b, c = f_str.partition('.')
        c = (c+"0"*n)[:n]       # 如论传入的函数有几位小数,在字符串后面都添加n为小数0
        return ".".join([a, c])
    
    r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1)
    time = r.elapsed.total_seconds()
    print("原始数据: %s" % time)
    
    print(get_two_float(time, 2))

    整理此篇文章,源于,接口自动化响应时间的获取,打印!

    url = self.uri + "/json/crm/save.action"
    data = self.s.post(url, data=self.testDody, verify=False)
    Time = str(data.elapsed.total_seconds())
    print(('响应时间: '+'%.2f'% float(Time) +'s' ))

    作者:含笑半步颠√

    博客链接:https://www.cnblogs.com/lixy-88428977

    声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。

  • 相关阅读:
    GAC的理解及其作用 [转]
    Binding Policy in .NET/ Assembly search order (Bin/GAC)
    Batch update
    Table-Valued Parameters in SQL Server 2008 (ADO.NET)
    EXT的bug 布局border 和 grid的cellediting
    ext 的controller中的refs的使用方法
    Ext 修改内容之后 不做任何动作 再次修改时的数据是原来第一次修改前的数据
    php 与mysql 数据库
    前端开发和后端开发
    http 你造吗?
  • 原文地址:https://www.cnblogs.com/lixy-88428977/p/10255975.html
Copyright © 2011-2022 走看看