diff options
| author | 韩丁康 <[email protected]> | 2023-11-13 20:22:01 +0800 |
|---|---|---|
| committer | 韩丁康 <[email protected]> | 2023-11-13 20:22:01 +0800 |
| commit | a58e6ca2b7c79811612ae4b760c6be8b9a67c141 (patch) | |
| tree | 3b543a269dcc7bde566008de215ca79af04dfd1d /apps | |
| parent | f7550e9192ed5aa7887865b7c65ffe0a9fb7e705 (diff) | |
时延选项配置
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/delay.py | 59 | ||||
| -rw-r--r-- | apps/script.py | 6 |
2 files changed, 52 insertions, 13 deletions
diff --git a/apps/delay.py b/apps/delay.py index f7cfe4a..2ca161c 100644 --- a/apps/delay.py +++ b/apps/delay.py @@ -7,10 +7,15 @@ from apiflask import APIFlask,APIBlueprint,Schema from apiflask.fields import Integer,String,List,Nested,IP,Dict from flask import request import pandas as pd +from requests.exceptions import Timeout import numpy as np bp=APIBlueprint("delay",__name__,url_prefix="/delay") +icmp_delaytable={} +tcp_delaytable={} +dns_delaytable={} + class TestNode(Schema): Id = Integer() Name=String() @@ -70,21 +75,55 @@ def get_pernode_delay(query_data,type): 'Type':type}) return {'delay_data':ans} -# 向 + def icmp_delay_query(target,addr): - res=requests.get(url="http://"+addr+":2525/script/icmpdelay",params={'ip':target}) - print("icmp ok:"+addr+"-------"+res.text) - return res.text + try: + res=requests.get(url="http://"+addr+":2525/script/icmpdelay",params={'ip':target},timeout=5) + print("icmp ok:" + addr + "-------" + res.text) + icmp_delaytable[addr+target]=res.text + return res.text + except Timeout: + # 如果存在旧数据 + if addr+target in icmp_delaytable.keys(): + pass + # 不存在则设0 + else: + icmp_delaytable[addr + target]=0 + return icmp_delaytable[addr + target] + def tcp_delay_query(target,addr): - res = requests.get(url="http://" + addr + ":2525/script/tcpdelay", params={'ip': target,'port':53}) - print("tcp ok:" + addr + "-------" + res.text) - return res.text + try: + res = requests.get(url="http://" + addr + ":2525/script/tcpdelay", params={'ip': target, 'port': 53}, timeout=5) + print("tcp ok:" + addr + "-------" + res.text) + tcp_delaytable[addr + target] = res.text + return res.text + except Timeout: + # 如果存在旧数据 + if addr + target in tcp_delaytable.keys(): + pass + # 不存在则设0 + else: + tcp_delaytable[addr + target] = 0 + return tcp_delaytable[addr + target] + + def dns_delay_query(target,addr): - res = requests.get(url="http://" + addr + ":2525/script/dnsdelay", params={'ip': target}) - print("dns ok:" + addr + "-------" + res.text) - return res.text + try: + res = requests.get(url="http://" + addr + ":2525/script/dnsdelay", params={'ip': target},timeout=5) + print("dns ok:" + addr + "-------" + res.text) + dns_delaytable[addr + target] = res.text + return dns_delaytable[addr + target] + except Timeout: + # 如果存在旧数据 + if addr + target in dns_delaytable.keys(): + pass + # 不存在则设0 + else: + dns_delaytable[addr + target] = 0 + return dns_delaytable[addr + target] + diff --git a/apps/script.py b/apps/script.py index 16fcbc6..f73b0d5 100644 --- a/apps/script.py +++ b/apps/script.py @@ -16,7 +16,7 @@ def hello(): @bp.route("/icmpdelay") def icmpdelay(): addr=request.args.get("ip") - host=ping(addr,count=2,interval=0.1) + host=ping(addr,count=2,interval=0.1,timeout=2) return str(host.avg_rtt) @@ -24,7 +24,7 @@ def icmpdelay(): def tcpdelay(): addr=request.args.get("ip") port=request.args.get("port",default=53) - tdelay=utping.cli(addr,port,2,5) + tdelay=utping.cli(addr,port,2,2) return str(tdelay) # dns时延测试函数,返回执行完成时的时间戳 @@ -41,7 +41,7 @@ def dnsdelay(): myResolver.nameservers = [dns.nameserver.Do53Nameserver(addr, port=port)] # 开始解析 - ans=myResolver.resolve(domain,qtype) + ans=myResolver.resolve(domain,qtype,lifetime=4) stop_time=time.time() t=stop_time-start_time return str(int(t*1000)) |
