download_speed/downloader.py

28 lines
939 B
Python

import requests
import datetime
import model
# file_size if byte
def download_file(servers, chunk_size=64 * 1024, file_size=1 * 1024 * 1024):
for server in servers:
url = server["url"]
server_name = server["name"]
chunk_read = 0
s_time = datetime.datetime.now()
e_time = None
with requests.get(url, stream=True) as r:
for chunk in r.iter_content(chunk_size):
if chunk_read >= file_size:
e_time = datetime.datetime.now()
break
if chunk:
chunk_read += len(chunk)
duration = (e_time - s_time).total_seconds()
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