Skip to content

Commit 73e96b7

Browse files
committed
minor fix
1 parent 152d3dd commit 73e96b7

File tree

2 files changed

+52
-54
lines changed

2 files changed

+52
-54
lines changed
Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,51 @@
1-
--- base_events_original.py 2024-10-07 10:26:48.000000000 +0800
2-
+++ base_events_patched.py 2025-03-18 01:00:23.045485200 +0800
3-
@@ -2050,3 +2050,48 @@
4-
5-
if self.is_running():
6-
self.call_soon_threadsafe(self._set_coroutine_origin_tracking, enabled)
7-
+
8-
+ def poll_events(self):
9-
+ """轮询I/O事件但不处理它们"""
10-
+ # 计算超时时间 - 保留动态超时计算
11-
+ timeout = None
12-
+ if self._ready or self._stopping:
13-
+ timeout = 0
14-
+ elif self._scheduled:
15-
+ # 计算所需的超时时间
16-
+ timeout = self._scheduled[0]._when - self.time()
17-
+ if timeout > MAXIMUM_SELECT_TIMEOUT:
18-
+ timeout = MAXIMUM_SELECT_TIMEOUT
19-
+ elif timeout < 0:
20-
+ timeout = 0
21-
+
22-
+ # 执行实际的轮询操作
23-
+ try:
24-
+ return self._selector.select(timeout)
25-
+ except:
26-
+ return []
27-
+
28-
+ def process_events(self, events):
29-
+ """处理轮询到的I/O事件"""
30-
+ if events:
31-
+ self._process_events(events)
32-
+
33-
+ def process_ready(self):
34-
+ """处理到期的定时器和执行就绪的回调"""
35-
+ # 处理已过期的计时器
36-
+ end_time = self.time() + self._clock_resolution
37-
+ while self._scheduled:
38-
+ handle = self._scheduled[0]
39-
+ if handle._when >= end_time:
40-
+ break
41-
+ handle = heapq.heappop(self._scheduled)
42-
+ handle._scheduled = False
43-
+ if not handle._cancelled:
44-
+ self._ready.append(handle)
45-
+
46-
+ # 执行就绪的回调
47-
+ ntodo = len(self._ready)
48-
+ for i in range(ntodo):
49-
+ handle = self._ready.popleft()
50-
+ if not handle._cancelled:
51-
+ handle._run()
1+
*** base_events_original.py 2025-04-03 00:11:41.962098300 +0800
2+
--- base_events_patched.py 2025-04-05 10:09:51.634970800 +0800
3+
***************
4+
*** 2050,2052 ****
5+
--- 2050,2095 ----
6+
7+
if self.is_running():
8+
self.call_soon_threadsafe(self._set_coroutine_origin_tracking, enabled)
9+
+
10+
+ def poll_events(self):
11+
+ """轮询I/O事件但不处理它们"""
12+
+ # 计算超时时间 - 保留动态超时计算
13+
+ timeout = None
14+
+ if self._ready or self._stopping:
15+
+ timeout = 0
16+
+ elif self._scheduled:
17+
+ # 计算所需的超时时间
18+
+ timeout = self._scheduled[0]._when - self.time()
19+
+ if timeout > MAXIMUM_SELECT_TIMEOUT:
20+
+ timeout = MAXIMUM_SELECT_TIMEOUT
21+
+ elif timeout < 0:
22+
+ timeout = 0
23+
+
24+
+ # 执行实际的轮询操作
25+
+ try:
26+
+ return self._selector.select(timeout)
27+
+ except:
28+
+ return []
29+
+
30+
+ def process_events(self, events):
31+
+ """处理轮询到的I/O事件"""
32+
+ if events:
33+
+ self._process_events(events)
34+
+
35+
+ def process_ready(self):
36+
+ """处理到期的定时器和执行就绪的回调"""
37+
+ # 处理已过期的计时器
38+
+ end_time = self.time() + self._clock_resolution
39+
+ while self._scheduled:
40+
+ handle = self._scheduled[0]
41+
+ if handle._when >= end_time:
42+
+ break
43+
+ handle = heapq.heappop(self._scheduled)
44+
+ handle._scheduled = False
45+
+ if not handle._cancelled:
46+
+ self._ready.append(handle)
47+
+
48+
+ while self._ready:
49+
+ handle = self._ready.popleft()
50+
+ if not handle._cancelled:
51+
+ handle._run()

examples/async_with_asyncio_guest_run/patches/base_events_patched.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2089,9 +2089,7 @@ def process_ready(self):
20892089
if not handle._cancelled:
20902090
self._ready.append(handle)
20912091

2092-
# 执行就绪的回调
2093-
ntodo = len(self._ready)
2094-
for i in range(ntodo):
2092+
while self._ready:
20952093
handle = self._ready.popleft()
20962094
if not handle._cancelled:
20972095
handle._run()

0 commit comments

Comments
 (0)