http_client.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:Mk3-Firmware 作者: emfcamp 项目源码 文件源码
def download_to(self, target, timeout=90):
        start_time = time.time()
        if not self.socket:
            raise OSError("Invalid response socket state. Has the content already been consumed?")
        try:
            if "Content-Length" in self.headers:
                remaining = int(self.headers["Content-Length"])
            elif "content-length" in self.headers:
                remaining = int(self.headers["content-length"])
            else:
                raise Exception("No Content-Length")

            with open(target, 'wb') as f:
                f.write(self.content_so_far)
                remaining -= len(self.content_so_far)
                del self.content_so_far
                while remaining > 0:
                    buf = self.socket.recv(BUFFER_SIZE)
                    f.write(buf)
                    remaining -= len(buf)

                    if (time.time() - start_time) > timeout:
                        raise Exception("HTTP request timeout")

                f.flush()
            os.sync()

        finally:
            self.close()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号