Only load users with a tgid at startup

This commit is contained in:
Tulir Asokan
2019-08-06 00:59:11 +03:00
parent d6ebce0425
commit 2a9ab569b4
3 changed files with 6 additions and 4 deletions
+2 -1
View File
@@ -222,8 +222,9 @@ class AbstractUser(ABC):
async def ensure_started(self, even_if_no_session=False) -> 'AbstractUser':
if not self.puppet_whitelisted or self.connected:
return self
self.log.debug("ensure_started(%s, even_if_no_session=%s)", self.mxid, even_if_no_session)
if even_if_no_session or self.session_container.has_session(self.mxid):
self.log.debug("Starting client due to ensure_started"
f"(even_if_no_session={even_if_no_session})")
await self.start(delete_unless_authenticated=not even_if_no_session)
return self
+2 -2
View File
@@ -41,8 +41,8 @@ class User(Base):
saved_contacts=saved_contacts)
@classmethod
def all(cls) -> Iterable['User']:
return cls._select_all()
def all_with_tgid(cls) -> Iterable['User']:
return cls._select_all(cls.c.tgid != None)
@classmethod
def get_by_tgid(cls, tgid: TelegramID) -> Optional['User']:
+2 -1
View File
@@ -414,4 +414,5 @@ def init(context: 'Context') -> Iterable[Awaitable['User']]:
global config
config = context.config
return (User.from_db(db_user).ensure_started() for db_user in DBUser.all() if db_user.tgid)
return (User.from_db(db_user).ensure_started()
for db_user in DBUser.all_with_tgid())