可以使用asyncio的wait_for(),如下所示:
import asyncio
from concurrent.futures import TimeoutError as ConnectionTimeoutError
# whatever url is your websocket server
url = 'ws://localhost:9090'
# timeout in seconds
timeout = 10
try:
# make connection attempt
connection = await asyncio.wait_for(websockets.connect(url), timeout)
except ConnectionTimeoutError as e:
# handle error
print('Error connecting.')
它会引起
<class 'concurrent.futures._base.TimeoutError'>
可以用
except ConnectionTimeoutError
阻止。
在python3.8中,它会引发一个
TimeoutError
可以用
except asyncio.exceptions.TimeoutError
阻止。