Dec-01-2017, 02:18 PM
Timeout is a parameter in the function call,just set time there.
This error be catch an give a better message.
from subprocess import check_output out = check_output(['ping', 'google.com'], timeout=5) print(out.decode('utf-8').strip())
Output:Pinging google.com [172.217.22.174] with 32 bytes of data:
Reply from 172.217.22.174: bytes=32 time=26ms TTL=56
Reply from 172.217.22.174: bytes=32 time=22ms TTL=56
Reply from 172.217.22.174: bytes=32 time=23ms TTL=56
Reply from 172.217.22.174: bytes=32 time=25ms TTL=56
Ping statistics for 172.217.22.174:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 22ms, Maximum = 26ms, Average = 24ms
Here it goes fine because the process finish before 5-sec.from subprocess import check_output import subprocess out = check_output(['ping', '-n', '10', 'google.com'], timeout=5) print(out.decode('utf-8').strip())
Error:Traceback (most recent call last):
File "C:\Python36\lib\subprocess.py", line 405, in run
........
subprocess.TimeoutExpired: Command '['ping', '-n', '10', 'google.com']' timed out after 5 seconds
Here it use longer than 5-sec,and get a subprocess.TimeoutExpired
,This error be catch an give a better message.
from subprocess import check_output try: out = check_output(['ping', '-n', '10', 'google.com'], timeout=5) print(out.decode('utf-8').strip()) except subprocess.TimeoutExpired: print('Process ran too long and got timed out')
Output:Process ran too long and got timed out