File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 88class Queue :
99 def __init__ (self , loop = None ):
1010 self ._loop = loop or asyncio .get_event_loop ()
11- self ._queue = deque ()
11+ self .queue = deque ()
1212 self ._getters = deque ()
1313
1414 def qsize (self ):
15- return len (self ._queue )
15+ return len (self .queue )
1616
1717 def put_nowait (self , item ):
1818 while self ._getters :
@@ -22,34 +22,34 @@ def put_nowait(self, item):
2222 fut .set_result (item )
2323 return
2424
25- self ._queue .append (item )
25+ self .queue .append (item )
2626
2727 async def get (self , timeout = None ):
2828 if self ._getters :
2929 await self ._getters [- 1 ]
3030
3131 try :
32- return self ._queue .popleft ()
32+ return self .queue .popleft ()
3333 except IndexError :
3434 fut = self ._loop .create_future ()
3535 self ._getters .append (fut )
3636
37- if timeout is None :
38- return await fut
39-
40- timer = self ._loop .call_at (self ._loop .time () + timeout , fut .cancel )
37+ if timeout is not None :
38+ timer = self ._loop .call_at (self ._loop .time () + timeout ,
39+ fut .cancel )
4140
4241 try :
4342 return await fut
43+ except asyncio .CancelledError :
44+ try :
45+ self ._getters .remove (fut )
46+ except ValueError :
47+ pass
48+
49+ raise
4450 finally :
45- timer .cancel ()
51+ if timeout is not None :
52+ timer .cancel ()
4653
4754 def get_nowait (self ):
48- return self ._queue .popleft ()
49-
50- # non-standar
51- def clear (self ):
52- self ._queue .clear ()
53- self ._getters .clear ()
54-
55- return not self ._queue and not self ._getters
55+ return self .queue .popleft ()
You can’t perform that action at this time.
0 commit comments