diff options
author | Erik Johnston <erik@matrix.org> | 2019-12-05 17:58:25 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-12-05 17:58:25 +0000 |
commit | 8437e2383ed2dffacca5395851023eeacb33d7ba (patch) | |
tree | b16b2cac8d11126b64731cfdef918352269f96b1 /synapse/util | |
parent | Merge pull request #6483 from matrix-org/erikj/port_rest_v2 (diff) | |
download | synapse-8437e2383ed2dffacca5395851023eeacb33d7ba.tar.xz |
Port SyncHandler to async/await
Diffstat (limited to 'synapse/util')
-rw-r--r-- | synapse/util/metrics.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/synapse/util/metrics.py b/synapse/util/metrics.py index 3286804322..63ddaaba87 100644 --- a/synapse/util/metrics.py +++ b/synapse/util/metrics.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import inspect import logging from functools import wraps @@ -64,12 +65,22 @@ def measure_func(name=None): def wrapper(func): block_name = func.__name__ if name is None else name - @wraps(func) - @defer.inlineCallbacks - def measured_func(self, *args, **kwargs): - with Measure(self.clock, block_name): - r = yield func(self, *args, **kwargs) - return r + if inspect.iscoroutinefunction(func): + + @wraps(func) + async def measured_func(self, *args, **kwargs): + with Measure(self.clock, block_name): + r = await func(self, *args, **kwargs) + return r + + else: + + @wraps(func) + @defer.inlineCallbacks + def measured_func(self, *args, **kwargs): + with Measure(self.clock, block_name): + r = yield func(self, *args, **kwargs) + return r return measured_func |