Skip to content

Commit e838443

Browse files
committed
Added DEFAULT_SELECTOR_SELECT_TIMEOUT
1 parent 5eb4fa4 commit e838443

File tree

5 files changed

+13
-8
lines changed

5 files changed

+13
-8
lines changed

proxy/common/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ def _env_threadless_compliant() -> bool:
107107
DEFAULT_MAX_SEND_SIZE = 16 * 1024
108108
DEFAULT_WORK_KLASS = 'proxy.http.HttpProtocolHandler'
109109
DEFAULT_ENABLE_PROXY_PROTOCOL = False
110+
DEFAULT_SELECTOR_SELECT_TIMEOUT = 0.1
110111

111112
DEFAULT_DEVTOOLS_DOC_URL = 'http://proxy'
112113
DEFAULT_DEVTOOLS_FRAME_ID = secrets.token_hex(8)

proxy/core/acceptor/acceptor.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
from ..event import EventQueue
3131

32+
from ...common.constants import DEFAULT_SELECTOR_SELECT_TIMEOUT
3233
from ...common.utils import is_threadless
3334
from ...common.logger import Logger
3435

@@ -105,7 +106,7 @@ def __init__(
105106
def run_once(self) -> None:
106107
with self.lock:
107108
assert self.selector and self.sock
108-
events = self.selector.select(timeout=1)
109+
events = self.selector.select(timeout=DEFAULT_SELECTOR_SELECT_TIMEOUT)
109110
if len(events) == 0:
110111
return
111112
conn, addr = self.sock.accept()
@@ -131,6 +132,7 @@ def run(self) -> None:
131132
try:
132133
self.selector.register(self.sock, selectors.EVENT_READ)
133134
while not self.running.is_set():
135+
# logger.debug('Looking for new work')
134136
self.run_once()
135137
except KeyboardInterrupt:
136138
pass

proxy/core/acceptor/threadless.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
from ...common.logger import Logger
3434
from ...common.types import Readables, Writables
35-
from ...common.constants import DEFAULT_TIMEOUT
35+
from ...common.constants import DEFAULT_TIMEOUT, DEFAULT_SELECTOR_SELECT_TIMEOUT
3636

3737
logger = logging.getLogger(__name__)
3838

@@ -94,7 +94,7 @@ def selected_events(self) -> Generator[
9494
# ValueError exceptions raised by selector.register
9595
# for invalid fd.
9696
self.selector.register(fd, worker_events[fd])
97-
ev = self.selector.select(timeout=1)
97+
ev = self.selector.select(timeout=DEFAULT_SELECTOR_SELECT_TIMEOUT)
9898
readables = []
9999
writables = []
100100
for key, mask in ev:
@@ -219,6 +219,7 @@ def run(self) -> None:
219219
self.selector.register(self.client_queue, selectors.EVENT_READ)
220220
self.loop = asyncio.get_event_loop_policy().get_event_loop()
221221
while not self.running.is_set():
222+
# logger.debug('Working on {0} works'.format(len(self.works)))
222223
self.run_once()
223224
except KeyboardInterrupt:
224225
pass

proxy/http/handler.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
from ..core.base import BaseTcpServerHandler
3232
from ..core.connection import TcpClientConnection
3333
from ..common.flag import flags
34-
from ..common.constants import DEFAULT_CLIENT_RECVBUF_SIZE, DEFAULT_KEY_FILE, DEFAULT_TIMEOUT
34+
from ..common.constants import DEFAULT_CLIENT_RECVBUF_SIZE, DEFAULT_KEY_FILE
35+
from ..common.constants import DEFAULT_SELECTOR_SELECT_TIMEOUT, DEFAULT_TIMEOUT
3536

3637

3738
logger = logging.getLogger(__name__)
@@ -365,7 +366,7 @@ def _selected_events(self) -> SelectedEventsGeneratorType:
365366
events = self.get_events()
366367
for fd in events:
367368
self.selector.register(fd, events[fd])
368-
ev = self.selector.select(timeout=1)
369+
ev = self.selector.select(timeout=DEFAULT_SELECTOR_SELECT_TIMEOUT)
369370
readables = []
370371
writables = []
371372
for key, mask in ev:
@@ -396,7 +397,7 @@ def _flush(self) -> None:
396397
while self.work.has_buffer():
397398
ev: List[
398399
Tuple[selectors.SelectorKey, int]
399-
] = self.selector.select(timeout=1)
400+
] = self.selector.select(timeout=DEFAULT_SELECTOR_SELECT_TIMEOUT)
400401
if len(ev) == 0:
401402
continue
402403
self.work.flush()

proxy/http/websocket/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
from ..parser import httpParserTypes, HttpParser
2727

28-
from ...common.constants import DEFAULT_BUFFER_SIZE
28+
from ...common.constants import DEFAULT_BUFFER_SIZE, DEFAULT_SELECTOR_SELECT_TIMEOUT
2929
from ...common.utils import new_socket_connection, build_websocket_handshake_request, text_
3030
from ...core.connection import tcpConnectionTypes, TcpConnection
3131

@@ -93,7 +93,7 @@ def run_once(self) -> bool:
9393
if self.has_buffer():
9494
ev |= selectors.EVENT_WRITE
9595
self.selector.register(self.sock.fileno(), ev)
96-
events = self.selector.select(timeout=1)
96+
events = self.selector.select(timeout=DEFAULT_SELECTOR_SELECT_TIMEOUT)
9797
self.selector.unregister(self.sock)
9898
for _, mask in events:
9999
if mask & selectors.EVENT_READ and self.on_message:

0 commit comments

Comments
 (0)