Slight enhancement to client_tasks.pop() in cancel tasks and disconnect logic.

pull/5/head
shipmints 2020-02-17 14:56:59 -05:00
rodzic 138313a3eb
commit 69e3e0bc5b
1 zmienionych plików z 3 dodań i 3 usunięć

Wyświetl plik

@ -182,7 +182,7 @@ class MQTTClient:
:return: :return:
""" """
try: try:
while True: while self.client_tasks:
task = self.client_tasks.pop() task = self.client_tasks.pop()
task.cancel() task.cancel()
except IndexError as err: except IndexError as err:
@ -349,16 +349,16 @@ class MQTTClient:
self.client_tasks.append(deliver_task) self.client_tasks.append(deliver_task)
self.logger.debug("Waiting message delivery") self.logger.debug("Waiting message delivery")
done, pending = yield from asyncio.wait([deliver_task], loop=self._loop, return_when=asyncio.FIRST_EXCEPTION, timeout=timeout) done, pending = yield from asyncio.wait([deliver_task], loop=self._loop, return_when=asyncio.FIRST_EXCEPTION, timeout=timeout)
if self.client_tasks:
self.client_tasks.pop()
if deliver_task in done: if deliver_task in done:
if deliver_task.exception() is not None: if deliver_task.exception() is not None:
# deliver_task raised an exception, pass it on to our caller # deliver_task raised an exception, pass it on to our caller
raise deliver_task.exception() raise deliver_task.exception()
self.client_tasks.pop()
return deliver_task.result() return deliver_task.result()
else: else:
#timeout occured before message received #timeout occured before message received
deliver_task.cancel() deliver_task.cancel()
self.client_tasks.pop()
raise asyncio.TimeoutError raise asyncio.TimeoutError
@asyncio.coroutine @asyncio.coroutine