summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/delay.py59
-rw-r--r--apps/script.py6
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))