Skip to content

Commit 3677695

Browse files
committed
PYTHON-4982 Fix spurious network errors when using asyncio
1 parent 1c7a7fe commit 3677695

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

pymongo/network_layer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
async def async_sendall(sock: Union[socket.socket, _sslConn], buf: bytes) -> None:
7272
timeout = sock.gettimeout()
7373
sock.settimeout(0.0)
74+
sock.setsockopt(socket.SOL_SOCKET, socket.SOCK_NONBLOCK, 1)
7475
loop = asyncio.get_event_loop()
7576
try:
7677
if _HAVE_SSL and isinstance(sock, (SSLSocket, _sslConn)):
@@ -258,6 +259,7 @@ async def async_receive_data(
258259
timeout = sock_timeout
259260

260261
sock.settimeout(0.0)
262+
sock.setsockopt(socket.SOL_SOCKET, socket.SOCK_NONBLOCK, 1)
261263
loop = asyncio.get_event_loop()
262264
cancellation_task = asyncio.create_task(_poll_cancellation(conn))
263265
try:
@@ -288,6 +290,7 @@ async def async_receive_data_socket(
288290
timeout = sock_timeout
289291

290292
sock.settimeout(0.0)
293+
sock.setsockopt(socket.SOL_SOCKET, socket.SOCK_NONBLOCK, 1)
291294
loop = asyncio.get_event_loop()
292295
try:
293296
if _HAVE_SSL and isinstance(sock, (SSLSocket, _sslConn)):

0 commit comments

Comments
 (0)