为什么当我从 python 进行 ping 测试时,它对 windows cmd 有不同的响应?
Why when I make a ping test from python does it have a different response to in windows cmd?
当我在 windows cmd 中使用命令 ping -l 1 -n 1 -w 750 google.com
时,它给我一个大约 10 毫秒的 ping。当我使用 python 和以下代码对其进行测试时,尽管超时为 750 毫秒,它仍会通过蜂鸣和打印定期检测超时。
import subprocess
import winsound
import datetime
while 1:
try:
subprocess.check_output(['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com'])
except:
print("cut at:", datetime.datetime.now())
winsound.Beep(250, 500)
引发的异常是:
subprocess.CalledProcessError: Command '['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com']' returned non-zero exit status 1
为什么它有如此不同的响应,有没有办法让代码更可靠地检测到互联网中断?
我发现了问题。因为它处于无限 while 循环中,所以它会每秒多次 ping google 并且他们的 dos 预防可能会注意到这一点并防止更多请求导致超时。它很容易在尝试部分用 time.sleep(1)
修复。
当我在 windows cmd 中使用命令 ping -l 1 -n 1 -w 750 google.com
时,它给我一个大约 10 毫秒的 ping。当我使用 python 和以下代码对其进行测试时,尽管超时为 750 毫秒,它仍会通过蜂鸣和打印定期检测超时。
import subprocess
import winsound
import datetime
while 1:
try:
subprocess.check_output(['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com'])
except:
print("cut at:", datetime.datetime.now())
winsound.Beep(250, 500)
引发的异常是:
subprocess.CalledProcessError: Command '['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com']' returned non-zero exit status 1
为什么它有如此不同的响应,有没有办法让代码更可靠地检测到互联网中断?
我发现了问题。因为它处于无限 while 循环中,所以它会每秒多次 ping google 并且他们的 dos 预防可能会注意到这一点并防止更多请求导致超时。它很容易在尝试部分用 time.sleep(1)
修复。