mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-29 15:39:00 +03:00
Add some docs
This commit is contained in:
parent
4ac1941592
commit
da1aa07db5
1 changed files with 15 additions and 3 deletions
|
@ -134,13 +134,25 @@ class PreserveLoggingContext(object):
|
||||||
|
|
||||||
|
|
||||||
def preserve_context_over_fn(fn, *args, **kwargs):
|
def preserve_context_over_fn(fn, *args, **kwargs):
|
||||||
with PreserveLoggingContext():
|
"""Takes a function and invokes it with the given arguments, but removes
|
||||||
deferred = fn(*args, **kwargs)
|
and restores the current logging context while doing so.
|
||||||
|
|
||||||
return preserve_context_over_deferred(deferred)
|
If the result is a deferred, call preserve_context_over_deferred before
|
||||||
|
returning it.
|
||||||
|
"""
|
||||||
|
with PreserveLoggingContext():
|
||||||
|
res = fn(*args, **kwargs)
|
||||||
|
|
||||||
|
if isinstance(res, defer.Deferred):
|
||||||
|
return preserve_context_over_deferred(res)
|
||||||
|
else:
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
def preserve_context_over_deferred(deferred):
|
def preserve_context_over_deferred(deferred):
|
||||||
|
"""Given a deferred wrap it such that any callbacks added later to it will
|
||||||
|
be invoked with the current context.
|
||||||
|
"""
|
||||||
d = defer.Deferred()
|
d = defer.Deferred()
|
||||||
|
|
||||||
current_context = LoggingContext.current_context()
|
current_context = LoggingContext.current_context()
|
||||||
|
|
Loading…
Reference in a new issue