diff --git a/maubot/client.py b/maubot/client.py index 81d3d17..99816f6 100644 --- a/maubot/client.py +++ b/maubot/client.py @@ -15,7 +15,7 @@ # along with this program. If not, see . from __future__ import annotations -from typing import TYPE_CHECKING, Any, AsyncGenerator, AsyncIterable, Awaitable, Callable, cast +from typing import TYPE_CHECKING, Any, AsyncGenerator, Awaitable, Callable, cast from collections import defaultdict import asyncio import logging @@ -43,6 +43,7 @@ from mautrix.types import ( ) from mautrix.util.async_getter_lock import async_getter_lock from mautrix.util.logging import TraceLogger +from mautrix.util import background_task from .db import Client as DBClient from .matrix import MaubotMatrixClient @@ -254,7 +255,7 @@ class Client(DBClient): self.log.warning( f"Failed to get /account/whoami, retrying in {(try_n + 1) * 10}s: {e}" ) - _ = asyncio.create_task(self.start(try_n + 1)) + background_task.create(self.start(try_n + 1)) return if whoami.user_id != self.id: self.log.error(f"User ID mismatch: expected {self.id}, but got {whoami.user_id}") diff --git a/maubot/instance.py b/maubot/instance.py index 895c700..67b82b5 100644 --- a/maubot/instance.py +++ b/maubot/instance.py @@ -32,6 +32,7 @@ from mautrix.util.async_db import Database, Scheme, UpgradeTable from mautrix.util.async_getter_lock import async_getter_lock from mautrix.util.config import BaseProxyConfig, RecursiveDict from mautrix.util.logging import TraceLogger +from mautrix.util import background_task from .client import Client from .db import DatabaseEngine, Instance as DBInstance @@ -280,7 +281,7 @@ class PluginInstance(DBInstance): if val != self.config_str: self.config_str = val self.log.debug("Creating background task to save updated config") - asyncio.create_task(self.update()) + background_task.create(self.update()) async def start_database( self, upgrade_table: UpgradeTable | None = None, actually_start: bool = True diff --git a/maubot/management/api/log.py b/maubot/management/api/log.py index 1f0b4bb..14c80cd 100644 --- a/maubot/management/api/log.py +++ b/maubot/management/api/log.py @@ -22,6 +22,8 @@ import logging from aiohttp import web, web_ws +from mautrix.util import background_task + from .auth import is_valid_token from .base import routes @@ -142,7 +144,7 @@ async def log_websocket(request: web.Request) -> web.WebSocketResponse: await ws.close(code=4000) log.debug(f"Connection from {request.remote} terminated due to no authentication") - asyncio.create_task(close_if_not_authenticated()) + background_task.create(close_if_not_authenticated()) try: msg: web_ws.WSMessage diff --git a/requirements.txt b/requirements.txt index c0cada8..50526b7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -mautrix>=0.16.2,<0.20 +mautrix>=0.19.4,<0.20 aiohttp>=3,<4 yarl>=1,<2 SQLAlchemy>=1,<1.4