import requests import datetime import model # file_size if byte # longest_time seconds def download_file( servers, chunk_size=4 * 1024, file_size=100 * 1024 * 1024, longest_time=60 ): for server in servers: url = server["url"] 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