Log callbacks
This commit is contained in:
parent
f2d2842f56
commit
c5422e2ec1
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
import functools
|
import functools
|
||||||
import gc
|
import gc
|
||||||
|
import inspect
|
||||||
import itertools
|
import itertools
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
@ -32,6 +33,7 @@ from prometheus_client.core import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from twisted.internet import reactor
|
from twisted.internet import reactor
|
||||||
|
from twisted.internet.defer import Deferred
|
||||||
from twisted.python.threadpool import ThreadPool
|
from twisted.python.threadpool import ThreadPool
|
||||||
|
|
||||||
import synapse
|
import synapse
|
||||||
|
@ -589,15 +591,21 @@ def callFromThreadTimer(func):
|
||||||
def callFromThread(f: Callable[..., Any], *args: object, **kwargs: object) -> None:
|
def callFromThread(f: Callable[..., Any], *args: object, **kwargs: object) -> None:
|
||||||
@functools.wraps(f)
|
@functools.wraps(f)
|
||||||
def g(*args, **kwargs):
|
def g(*args, **kwargs):
|
||||||
|
callbacks = None
|
||||||
|
if inspect.ismethod(f):
|
||||||
|
if isinstance(f.__self__, Deferred):
|
||||||
|
callbacks = list(f.__self__.callbacks)
|
||||||
|
|
||||||
start = time.time()
|
start = time.time()
|
||||||
r = f(*args, **kwargs)
|
r = f(*args, **kwargs)
|
||||||
end = time.time()
|
end = time.time()
|
||||||
|
|
||||||
if end - start > 0.5:
|
if end - start > 0.5:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"callFromThread took %f seconds. name: %s",
|
"callFromThread took %f seconds. name: %s, callbacks: %s",
|
||||||
end - start,
|
end - start,
|
||||||
f,
|
f,
|
||||||
|
callbacks,
|
||||||
)
|
)
|
||||||
|
|
||||||
return r
|
return r
|
||||||
|
|
Loading…
Reference in a new issue