ping3 的帮助,设置 timeout=20 参数:
from ping3 import ping
otvet = ping('10.200.231.203', timeout=20, ttl=20)
print(otvet)
如果有响应到达Response from 10.8.8.150: The specified host is not available,那么 response 的值立即变为 False。
Ответ от 10.200.231.203: число байт=32 время=94мс TTL=62
Ответ от 10.200.231.203: число байт=32 время=86мс TTL=62
Ответ от 10.200.231.203: число байт=32 время=82мс TTL=62
Ответ от 10.200.231.203: число байт=32 время=103мс TTL=62
Ответ от 10.200.231.203: число байт=32 время=87мс TTL=62
Превышен интервал ожидания для запроса.
Ответ от 10.8.8.150: Заданный узел недоступен.
Превышен интервал ожидания для запроса.
Ответ от 10.8.8.150: Заданный узел недоступен.
Превышен интервал ожидания для запроса.
怎么办,如果没有得到一个完整的答案,那么他无论如何都试图在 20 秒内联系到他?
我想使用异常循环的现有循环:
def ping_complexes(row_size):
try:
records = Mangustes.query.limit(row_size).all()
for record in records:
if ping(record.ip, timeout=20, ttl=3) in (None, False):
print('Offline: '+record.ip)
record.Status = 'Offline'
else:
print('Online: ', record.ip)
record.Status = 'Online'
db.session.commit()
except Exception as e:
print("???", e)
额外的尝试 功能:
def ping_complexes(row_size):
try:
records = Mangustes.query.limit(row_size).all()
for record in records:
if pinger in (None, False):
print('Offline: '+record.ip)
record.Status = 'Offline'
else:
print('Online: ', record.ip)
record.Status = 'Online'
db.session.commit()
except Exception as e:
print("???", e)
def pinger():
while (datetime.datetime.now() - start).total_seconds() < timeout:
otvet = ping(record.ip, timeout=timeout)
if otvet:
break
return(otvet)