все Python 3socketфункция
socket.setdefaulttimeout()
тайм-ауты
Задаёт тайм-аут по умолчанию для всех сокетов, которые будут созданы после вызова, во всём процессе.
Синтаксис
socket.setdefaulttimeout(timeout) # число секунд или None
Настройка глобальная: она действует и на сокеты внутри библиотек (urllib, http.client, smtplib), поэтому в библиотечном коде её не трогают — передают timeout= или вызывают settimeout() у своего сокета. Уже созданные сокеты не меняются. 0 делает все новые сокеты неблокирующими (BlockingIOError вместо ожидания), None возвращает ожидание без срока. Истёкший срок поднимает TimeoutError; socket.timeout с 3.10 — просто его другое имя. Разрешение имён (getaddrinfo) этим тайм-аутом не ограничено.
Примеры
import socket
with socket.socket() as old:
socket.setdefaulttimeout(0.5)
with socket.socket() as new:
print(old.gettimeout(), new.gettimeout()) # → None 0.5
socket.setdefaulttimeout(None)
print(socket.getdefaulttimeout()) # → None
# Python 3.10+
import socket
socket.setdefaulttimeout(0.1)
a, b = socket.socketpair()
with a, b:
try:
b.recv(1024)
except TimeoutError as e:
print(e) # → timed out
print(socket.timeout is TimeoutError) # → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности