From 6e0056aed30badf05e89ddc2efd4b474ccd04b8e Mon Sep 17 00:00:00 2001 From: facat Date: Sun, 16 Jun 2019 23:23:07 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8A=A0=E5=85=A5=E8=B6=85=E6=97=B6=E9=87=8D?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- downloader.py | 41 +++++++++++++++++++++++++---------------- main.py | 8 +++++--- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/downloader.py b/downloader.py index dbe161b..68c869d 100644 --- a/downloader.py +++ b/downloader.py @@ -14,19 +14,28 @@ def download_file( server_name = server["name"] chunk_read = 0 s_time = datetime.datetime.now() - with requests.get(url, stream=True) as r: - for chunk in r.iter_content(chunk_size): - if chunk: - chunk_read += len(chunk) - e_time = datetime.datetime.now() - duration = (e_time - s_time).total_seconds() - if chunk_read >= file_size: - break - if duration >= longest_time: - print('Longer than {longest_time} seconds. Stopped.'.format(longest_time=longest_time)) - break - speed = chunk_read / duration / 1024 / 1024 * 8 # mega bit - model.add_record(server_name, speed) - # print(now_timestamp{} MB download".format(chunk_read / 1024 / 1024)) - # print("{} seconds".format(duration / 1)) - return speed + try: + with requests.get(url, stream=True, timeout=longest_time) as r: + for chunk in r.iter_content(chunk_size): + if chunk: + chunk_read += len(chunk) + e_time = datetime.datetime.now() + duration = (e_time - s_time).total_seconds() + if chunk_read >= file_size: + break + if duration >= longest_time: + print( + "{server} longer than {longest_time} seconds. Stopped.".format( + longest_time=longest_time, server=server_name + ) + ) + break + speed = chunk_read / duration / 1024 / 1024 * 8 # mega bit + model.add_record(server_name, speed) + print("{server}:{speed} Mbit/s".format(server=server_name, speed=speed)) + except requests.exceptions.Timeout as e: + print( + "timeout before wait {timeout} seconds. Error:{err}".format( + err=str(e), timeout=longest_time + ) + ) diff --git a/main.py b/main.py index 93ac97c..e9dc5b0 100644 --- a/main.py +++ b/main.py @@ -5,7 +5,9 @@ import downloader if __name__ == "__main__": - servers = [{"url": "http://67.209.190.15/1000M.bin", "name": "bwg"}] - speed = downloader.download_file(servers) - print(speed) + servers = [ + {"url": "http://67.209.190.15/1000M.bin", "name": "bwg"}, + {"url": "http://192.168.1.130:10010/1000MB.bin", "name": "local"}, + ] + downloader.download_file(servers) print("Finished.")