mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Merge pull request #3059 from matrix-org/rav/doc_response_cache
Document the behaviour of ResponseCache
This commit is contained in:
commit
261124396e
@ -31,6 +31,18 @@ class ResponseCache(object):
|
|||||||
self.timeout_sec = timeout_ms / 1000.
|
self.timeout_sec = timeout_ms / 1000.
|
||||||
|
|
||||||
def get(self, key):
|
def get(self, key):
|
||||||
|
"""Look up the given key.
|
||||||
|
|
||||||
|
Returns a deferred which doesn't follow the synapse logcontext rules,
|
||||||
|
so you'll probably want to make_deferred_yieldable it.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
key (str):
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
twisted.internet.defer.Deferred|None: None if there is no entry
|
||||||
|
for this key; otherwise a deferred result.
|
||||||
|
"""
|
||||||
result = self.pending_result_cache.get(key)
|
result = self.pending_result_cache.get(key)
|
||||||
if result is not None:
|
if result is not None:
|
||||||
return result.observe()
|
return result.observe()
|
||||||
@ -38,6 +50,26 @@ class ResponseCache(object):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def set(self, key, deferred):
|
def set(self, key, deferred):
|
||||||
|
"""Set the entry for the given key to the given deferred.
|
||||||
|
|
||||||
|
*deferred* should run its callbacks in the sentinel logcontext (ie,
|
||||||
|
you should wrap normal synapse deferreds with
|
||||||
|
logcontext.run_in_background).
|
||||||
|
|
||||||
|
Returns a new Deferred which also doesn't follow the synapse logcontext
|
||||||
|
rules, so you will want to make_deferred_yieldable it
|
||||||
|
|
||||||
|
(TODO: before using this more widely, it might make sense to refactor
|
||||||
|
it and get() so that they do the necessary wrapping rather than having
|
||||||
|
to do it everywhere ResponseCache is used.)
|
||||||
|
|
||||||
|
Args:
|
||||||
|
key (str):
|
||||||
|
deferred (twisted.internet.defer.Deferred):
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
twisted.internet.defer.Deferred
|
||||||
|
"""
|
||||||
result = ObservableDeferred(deferred, consumeErrors=True)
|
result = ObservableDeferred(deferred, consumeErrors=True)
|
||||||
self.pending_result_cache[key] = result
|
self.pending_result_cache[key] = result
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user