1.修复没有返回速度的bug。

2.加入超长停止功能。
This commit is contained in:
facat 2019-06-16 22:55:40 +08:00
parent d6abc1e86a
commit da63baeb8d
3 changed files with 18 additions and 10 deletions

View File

@ -3,25 +3,30 @@ import datetime
import model
# file_size if byte
# longest_time seconds
def download_file(servers, chunk_size=64 * 1024, file_size=1 * 1024 * 1024):
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()
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()
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
return speed

View File

@ -1,8 +1,11 @@
#!/usr/bin/python
import downloader
if __name__ == "__main__":
servers = [{"url": "http://67.209.190.15/1000M.bin", "name": "bwg"}]
chunk_read = downloader.download_file(servers)
# print(chunk_read)
speed = downloader.download_file(servers)
print(speed)
print("Finished.")

View File

@ -9,7 +9,7 @@ mysql_db = MySQLDatabase(
def add_record(server, speed):
now = datetime.datetime.now()
now_timestamp = now.strftime("%Y-%m-%d %H:%M:%S")
print(now_timestamp)
# print(now_timestamp)
mysql_db.execute_sql(
'insert into vps_download_speed(server,speed,datetime) values("{server}",{speed},"{datetime}")'.format(
server=server, speed=speed, datetime=now_timestamp