mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 02:24:49 -04:00
Add type hints for HTTP and email pushers. (#8880)
This commit is contained in:
parent
02e588856a
commit
92d87c6882
8 changed files with 168 additions and 101 deletions
|
@ -15,7 +15,7 @@
|
|||
# limitations under the License.
|
||||
|
||||
import logging
|
||||
from typing import TYPE_CHECKING, Dict, Union
|
||||
from typing import TYPE_CHECKING, Any, Dict, Optional
|
||||
|
||||
from prometheus_client import Gauge
|
||||
|
||||
|
@ -23,9 +23,7 @@ from synapse.metrics.background_process_metrics import (
|
|||
run_as_background_process,
|
||||
wrap_as_background_process,
|
||||
)
|
||||
from synapse.push import PusherConfigException
|
||||
from synapse.push.emailpusher import EmailPusher
|
||||
from synapse.push.httppusher import HttpPusher
|
||||
from synapse.push import Pusher, PusherConfigException
|
||||
from synapse.push.pusher import PusherFactory
|
||||
from synapse.types import RoomStreamToken
|
||||
from synapse.util.async_helpers import concurrently_execute
|
||||
|
@ -77,7 +75,7 @@ class PusherPool:
|
|||
self._last_room_stream_id_seen = self.store.get_room_max_stream_ordering()
|
||||
|
||||
# map from user id to app_id:pushkey to pusher
|
||||
self.pushers = {} # type: Dict[str, Dict[str, Union[HttpPusher, EmailPusher]]]
|
||||
self.pushers = {} # type: Dict[str, Dict[str, Pusher]]
|
||||
|
||||
def start(self):
|
||||
"""Starts the pushers off in a background process.
|
||||
|
@ -99,11 +97,11 @@ class PusherPool:
|
|||
lang,
|
||||
data,
|
||||
profile_tag="",
|
||||
):
|
||||
) -> Optional[Pusher]:
|
||||
"""Creates a new pusher and adds it to the pool
|
||||
|
||||
Returns:
|
||||
EmailPusher|HttpPusher
|
||||
The newly created pusher.
|
||||
"""
|
||||
|
||||
time_now_msec = self.clock.time_msec()
|
||||
|
@ -267,17 +265,19 @@ class PusherPool:
|
|||
except Exception:
|
||||
logger.exception("Exception in pusher on_new_receipts")
|
||||
|
||||
async def start_pusher_by_id(self, app_id, pushkey, user_id):
|
||||
async def start_pusher_by_id(
|
||||
self, app_id: str, pushkey: str, user_id: str
|
||||
) -> Optional[Pusher]:
|
||||
"""Look up the details for the given pusher, and start it
|
||||
|
||||
Returns:
|
||||
EmailPusher|HttpPusher|None: The pusher started, if any
|
||||
The pusher started, if any
|
||||
"""
|
||||
if not self._should_start_pushers:
|
||||
return
|
||||
return None
|
||||
|
||||
if not self._pusher_shard_config.should_handle(self._instance_name, user_id):
|
||||
return
|
||||
return None
|
||||
|
||||
resultlist = await self.store.get_pushers_by_app_id_and_pushkey(app_id, pushkey)
|
||||
|
||||
|
@ -303,19 +303,19 @@ class PusherPool:
|
|||
|
||||
logger.info("Started pushers")
|
||||
|
||||
async def _start_pusher(self, pusherdict):
|
||||
async def _start_pusher(self, pusherdict: Dict[str, Any]) -> Optional[Pusher]:
|
||||
"""Start the given pusher
|
||||
|
||||
Args:
|
||||
pusherdict (dict): dict with the values pulled from the db table
|
||||
pusherdict: dict with the values pulled from the db table
|
||||
|
||||
Returns:
|
||||
EmailPusher|HttpPusher
|
||||
The newly created pusher or None.
|
||||
"""
|
||||
if not self._pusher_shard_config.should_handle(
|
||||
self._instance_name, pusherdict["user_name"]
|
||||
):
|
||||
return
|
||||
return None
|
||||
|
||||
try:
|
||||
p = self.pusher_factory.create_pusher(pusherdict)
|
||||
|
@ -328,15 +328,15 @@ class PusherPool:
|
|||
pusherdict.get("pushkey"),
|
||||
e,
|
||||
)
|
||||
return
|
||||
return None
|
||||
except Exception:
|
||||
logger.exception(
|
||||
"Couldn't start pusher id %i: caught Exception", pusherdict["id"],
|
||||
)
|
||||
return
|
||||
return None
|
||||
|
||||
if not p:
|
||||
return
|
||||
return None
|
||||
|
||||
appid_pushkey = "%s:%s" % (pusherdict["app_id"], pusherdict["pushkey"])
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue