def _timer(self):
if not self._queue or not self._waiters:
return
ts = heapq.nsmallest(1, self._queue)[0][0]
t = ts - time.time()
if t < 0:
score, f = self._waiters.pop(0)
ts, val = heapq.heappop(self._queue)
if score:
f.set_result((val, ts))
else:
f.set_result(val)
else:
await asyncio.sleep(t, loop=self.loop)
self._future = self.loop.create_task(self._timer())
评论列表
文章目录