Python Glossary English

все 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Сообщить о неточности