美文网首页
用Python 判断http下载超时

用Python 判断http下载超时

作者: 阳光_8af8 | 来源:发表于2017-12-22 11:10 被阅读0次

    由于对http请求理解不深入,开始我一直是使用的requests里的timeout参数,即:

    req = requests.get(url ,stream = True,timeout = 5)

    但在实际的测试中发现,当我们下载大文件的时候,会远远超过5秒,而系统也不会出现异常,这是为什么呢?原因很简单,因为这里的timeout,仅仅是指从发起请求,到服务器响应给我们这中间的时间,而下载过程其实是已经响应成功了,因此就不能通过这种方法来自动中断http下载连接。

    要优化这一问题,具体可如下:

    STime = time.time() S #文件下载开始时间
    n = requests.get(url ,stream = True)

    f = open('test','wb')
    for chunk in n.iter_content(chunk_size=65536):
    if chunk: # filter out keep-alive new chunks
    NTime = time.time()
    if (NTime - STime > 10): S #判断文件片已下载时间,如果超过10秒,则自动中断线程
    raise TooSlowException
    f.write(chunk)
    f.flush()
    f.close()
    class TooSlowException(Exception):
    """
    用于判断下载速度过慢的异常类
    """
    pass
    这段代码实际上在分块读取的过程中,加上的时间的判断,并且在每一块保存的时候,和初始时间进行相减比较,就能得到当前下载的时间并判断超时了。

    相关文章

      网友评论

          本文标题:用Python 判断http下载超时

          本文链接:https://www.haomeiwen.com/subject/fvetgxtx.html