From 0323f5a3bbbd6123d90c6160d7eab84bf1468f98 Mon Sep 17 00:00:00 2001 From: facat Date: Wed, 19 Jun 2019 21:12:26 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=9B=B4=E6=96=B0=E4=BA=86requirement=202.?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86ping=E7=9A=84=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 11 +++++++++++ downloader.py | 14 +++----------- main.py | 3 ++- model.py | 17 +++++++++++++++-- ping.py | 30 ++++++++++++++++++++++++++++++ requirements.txt | 1 + 6 files changed, 62 insertions(+), 14 deletions(-) create mode 100644 ping.py diff --git a/config.py b/config.py index 1cdb92b..cd03c00 100644 --- a/config.py +++ b/config.py @@ -5,6 +5,17 @@ import sys g_args = None +def get_servers(): + js = read_json() + _servers = js["servers"] + servers_dic = {} + for s in _servers: + servers_dic[s] = {} + servers_dic[s]["name"] = s + servers_dic[s]["url"] = _servers[s]["url"] + return servers_dic + + def read_json(): global g_args json_path = g_args.config diff --git a/downloader.py b/downloader.py index 8875eda..a1cfc78 100644 --- a/downloader.py +++ b/downloader.py @@ -4,23 +4,15 @@ import model import config -def get_servers(): - js = config.read_json() - _servers = js["servers"] - servers_dic = {} - for s in _servers: - servers_dic[s] = {} - servers_dic[s]["name"] = s - servers_dic[s]["url"] = _servers[s]["url"] - return servers_dic + # file_size if byte # longest_time seconds def download_file(chunk_size=4 * 1024, file_size=100 * 1024 * 1024, longest_time=60): execution_datetime=datetime.datetime.now() - print(execution_datetime) - servers = get_servers() + print("Download at {time}".format(time=execution_datetime)) + servers = config.get_servers() for server_name in servers: server = servers[server_name] url = server["url"] diff --git a/main.py b/main.py index 81d9df7..e44625b 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,11 @@ #!/usr/bin/python -import datetime import downloader import config +import ping if __name__ == "__main__": config.init_config() downloader.download_file() + ping.ping() print("Finished.") diff --git a/model.py b/model.py index b5d2c34..b05484b 100644 --- a/model.py +++ b/model.py @@ -6,11 +6,24 @@ mysql_db = MySQLDatabase( ) -def add_record(execution_datetime,server, speed): - execution_datetime_utc = execution_datetime-datetime.timedelta(hours=8)#转换为UTC时间。 +def add_record(execution_datetime, server, speed): + execution_datetime_utc = execution_datetime - datetime.timedelta( + hours=8 + ) # 转换为UTC时间。 # 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=execution_datetime_utc ) ) + + +def add_ping_record(execution_datetime, server, ping): + execution_datetime_utc = execution_datetime - datetime.timedelta( + hours=8 + ) # 转换为UTC时间。 + mysql_db.execute_sql( + 'insert into vps_ping(server,ping,datetime) values("{server}",{ping},"{datetime}")'.format( + server=server, ping=ping, datetime=execution_datetime_utc + ) + ) diff --git a/ping.py b/ping.py new file mode 100644 index 0000000..d44a4d3 --- /dev/null +++ b/ping.py @@ -0,0 +1,30 @@ +import config +import urllib.parse as parse +import ping3 +import model +import datetime + + +def ping(): + servers = config.get_servers() + execution_datetime = datetime.datetime.now() + print("Ping at {time}".format(time=execution_datetime)) + for server_name in servers: + server = servers[server_name] + url = server["url"] + named_tup = parse.urlparse(url) + netloc = named_tup.netloc + port_loc = netloc.find(":") + if port_loc > 0: + addr = netloc[0:port_loc] + else: + addr = netloc + ping_delay = ping3.ping(addr, timeout=5) * 1000 # in millionsecond + print('Ping delay for {serv} is {ping_val}'.format(serv=server_name,ping_val=ping_delay)) + model.add_ping_record(execution_datetime, server_name, ping_delay) + + +if __name__ == "__main__": + config.init_config() + ping() + pass diff --git a/requirements.txt b/requirements.txt index d33de19..0526b65 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ requests peewee mysqlclient +ping3 \ No newline at end of file