fix: Store reference to async tasks

https://docs.astral.sh/ruff/rules/asyncio-dangling-task/
This commit is contained in:
2024-04-21 04:39:31 +00:00
parent 2773f9a2f8
commit 91c8547af2

View File

@ -36,6 +36,7 @@ class DiscordLogHandler(logging.Handler):
self._bucket_data: dict["_Level", "LogRecord"] = { self._bucket_data: dict["_Level", "LogRecord"] = {
logging.WARNING: [], logging.WARNING: [],
} }
self._tasks = set()
def emit(self, record: "LogRecord") -> None: def emit(self, record: "LogRecord") -> None:
if record.levelno in {logging.CRITICAL, logging.ERROR}: if record.levelno in {logging.CRITICAL, logging.ERROR}:
@ -54,7 +55,9 @@ class DiscordLogHandler(logging.Handler):
await asyncio.sleep(60) await asyncio.sleep(60)
self._send_bucket_data() self._send_bucket_data()
asyncio.ensure_future(schedule()) t = asyncio.ensure_future(schedule())
self._tasks.add(t)
t.add_done_callback(self._tasks.discard)
def _send_bucket_data(self): def _send_bucket_data(self):
@ -135,7 +138,9 @@ class DiscordLogHandler(logging.Handler):
return " ".join(pings) return " ".join(pings)
def _post_data(self, body: dict): def _post_data(self, body: dict):
asyncio.ensure_future(self._post_data_inner(body)) t = asyncio.ensure_future(self._post_data_inner(body))
self._tasks.add(t)
t.add_done_callback(self._tasks.discard)
async def _post_data_inner(self, body: dict): async def _post_data_inner(self, body: dict):
scale_retry_debounce = 2 scale_retry_debounce = 2