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/delay.py | |
| parent | f7550e9192ed5aa7887865b7c65ffe0a9fb7e705 (diff) | |
时延选项配置
Diffstat (limited to 'apps/delay.py')
| -rw-r--r-- | apps/delay.py | 59 |
1 files changed, 49 insertions, 10 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] + |
