diff options
author | Kegan Dougal <kegan@matrix.org> | 2015-03-09 17:01:19 +0000 |
---|---|---|
committer | Kegan Dougal <kegan@matrix.org> | 2015-03-09 17:01:19 +0000 |
commit | 21fd84dcb8645a555cc35adb8b2a5a68536b8087 (patch) | |
tree | b400ce68a36fcd01e3f4fca568a43f6ae55e9a36 /synapse/handlers/appservice.py | |
parent | Finish appservice txn storage impl and tests. (diff) | |
download | synapse-21fd84dcb8645a555cc35adb8b2a5a68536b8087.tar.xz |
Use seconds; start gluing in the AS scheduler into the AS handler.
Diffstat (limited to 'synapse/handlers/appservice.py')
-rw-r--r-- | synapse/handlers/appservice.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py index 2c488a46f6..f3cd458e6b 100644 --- a/synapse/handlers/appservice.py +++ b/synapse/handlers/appservice.py @@ -26,15 +26,22 @@ import logging logger = logging.getLogger(__name__) +def log_failure(failure): + logger.error("Application Services Failure: %s", failure.value) + logger.error(failure.getTraceback()) + + # NB: Purposefully not inheriting BaseHandler since that contains way too much # setup code which this handler does not need or use. This makes testing a lot # easier. class ApplicationServicesHandler(object): - def __init__(self, hs, appservice_api): + def __init__(self, hs, appservice_api, appservice_scheduler): self.store = hs.get_datastore() self.hs = hs self.appservice_api = appservice_api + self.scheduler = appservice_scheduler + self.started_scheduler = False @defer.inlineCallbacks def register(self, app_service): @@ -90,9 +97,13 @@ class ApplicationServicesHandler(object): if event.type == EventTypes.Member: yield self._check_user_exists(event.state_key) - # Fork off pushes to these services - XXX First cut, best effort + if not self.started_scheduler: + self.scheduler.start().addErrback(log_failure) + self.started_scheduler = True + + # Fork off pushes to these services for service in services: - self.appservice_api.push(service, event) + self.scheduler.submit_event_for_as(service, event) @defer.inlineCallbacks def query_user_exists(self, user_id): |