@@ -132,7 +132,6 @@ def __new__(cls, *args, **kwargs):
132132 o = super ().__new__ (cls )
133133 o ._processed = 0
134134 o ._next_time = 1
135- o ._closing_msg = None
136135 o ._closing_waiter = None
137136 o ._concurrent_tasks = set ()
138137 return o
@@ -161,7 +160,7 @@ async def start(self, worker):
161160 '''Starts consuming tasks
162161 '''
163162 await self .pubsub .start ()
164- self ._pool_tasks (worker )
163+ self ._poll_tasks (worker )
165164 self .logger .warning ('%s started polling tasks' , self )
166165 return self
167166
@@ -171,24 +170,22 @@ def closing(self):
171170 def close (self , msg = None ):
172171 if not self .closing ():
173172 self ._closing_waiter = Future (loop = self ._loop )
174- self ._closing_msg = msg
173+ self .logger . warning ( msg )
175174 return self ._closing_waiter
176175
177176 # #######################################################################
178177 # # PRIVATE METHODS
179178 # #######################################################################
180- def _pool_tasks (self , worker , next_time = None ):
181- if self .closing ():
182- if not self ._concurrent_tasks :
183- self ._do_close ()
184- else :
185- if worker .is_running () and not next_time :
186- ensure_future (self ._may_pool_task (worker ), loop = worker ._loop )
187- elif not worker .after_run ():
188- next_time = next_time or 0
189- worker ._loop .call_later (next_time , self ._pool_tasks , worker )
190-
191- async def _may_pool_task (self , worker ):
179+ def _poll_tasks (self , worker , next_time = None ):
180+ if self .closing () and not self ._concurrent_tasks :
181+ self ._do_close ()
182+ elif worker .is_running () and not next_time :
183+ ensure_future (self ._may_poll_task (worker ), loop = worker ._loop )
184+ elif not worker .after_run ():
185+ next_time = next_time or 0
186+ worker ._loop .call_later (next_time , self ._poll_tasks , worker )
187+
188+ async def _may_poll_task (self , worker ):
192189 # Called in the ``worker`` event loop.
193190 #
194191 # It pools a new task if possible, and add it to the queue of
@@ -200,7 +197,8 @@ async def _may_pool_task(self, worker):
200197 max_tasks = self .cfg .max_requests
201198 if max_tasks and self ._processed >= max_tasks :
202199 self .close (
203- 'Processed %s tasks. Restarting.' % self ._processed
200+ 'Processed %s tasks. Stop polling tasks.'
201+ % self ._processed
204202 )
205203
206204 if not self .closing ():
@@ -238,7 +236,7 @@ async def _may_pool_task(self, worker):
238236 next_time = self ._next_time
239237 await self ._broadcast (worker )
240238
241- self ._pool_tasks (worker , next_time )
239+ self ._poll_tasks (worker , next_time )
242240
243241 def _broadcast (self , worker ):
244242 info = self .info ()
@@ -247,7 +245,7 @@ def _broadcast(self, worker):
247245 return self .pubsub .publish (consumer_event , info )
248246
249247 def _do_close (self ):
250- if self ._closing_msg :
251- self .logger .warning (self ._closing_msg )
248+ self .logger .warning ('Closing %s' , self )
252249 self .manager .close ()
253250 self ._closing_waiter .set_result (True )
251+ self ._loop .call_later (1 , self ._loop .stop )
0 commit comments