Skip to content

Commit c409adc

Browse files
authored
Use selectors.DefaultSelector over select.select (#604)
select.select, while being available on many platforms has the drawback of not being very modern. On some Linux systems, for instance, it is limited to 1024 open file descriptors. Python offers a nice wrapper to choose the best way for each OS to poll sockets named selectors.DefaultSelector.
1 parent 3ed207a commit c409adc

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

neo4j/io/__init__.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
)
4242
from logging import getLogger
4343
from random import choice
44-
from select import select
44+
import selectors
4545
from socket import (
4646
AF_INET,
4747
AF_INET6,
@@ -1325,8 +1325,9 @@ def _handshake(s, resolved_address):
13251325

13261326
# Handle the handshake response
13271327
ready_to_read = False
1328-
while not ready_to_read:
1329-
ready_to_read, _, _ = select((s,), (), (), 1)
1328+
with selectors.DefaultSelector() as selector:
1329+
selector.register(s, selectors.EVENT_READ)
1330+
selector.select(1)
13301331
try:
13311332
data = s.recv(4)
13321333
except OSError:

0 commit comments

Comments
 (0)