Закрытие неблокирующего сокета Python: может ли оно вызвать BlockingIOError? - PullRequest
0 голосов
/ 23 декабря 2018

Если вы отключили неблокирующую розетку:

sock.setblocking(False)
...
sock.shutdown(SHUT_RDWR)

Возможно ли, что вызов shutdown вызовет ошибку BlockingIOError, и если да, то при каких условиях?Я не испытывал этого, но это (конечно) не означает, что это не может произойти.

1 Ответ

0 голосов
/ 23 декабря 2018

Согласно документации POSIX и Linux , shutdown не может вернуть EWOULDBLOCK или эквивалентную ошибку.Следовательно, библиотека asyncio не предоставляет никаких условий для обработки такого результата.

Хотя shutdown() передает (мета) данные одноранговому узлу, вы можете думать о shutdown как о выходе сразу сфактическая работа, выполняемая ОС за кулисами.close() работает примерно так же.

...