Skip to content

Commit e8a520e

Browse files
author
Peter Giacomo Lombardo
authored
FastAPI: Load only when supported version in use (#284)
1 parent d518e46 commit e8a520e

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

instana/instrumentation/fastapi_inst.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,36 @@
44
"""
55
try:
66
import fastapi
7+
import os
78
import wrapt
89
import signal
9-
import os
10+
from distutils.version import LooseVersion
1011

1112
from ..log import logger
1213
from ..util import running_in_gunicorn
1314
from .asgi import InstanaASGIMiddleware
1415
from starlette.middleware import Middleware
1516

16-
@wrapt.patch_function_wrapper('fastapi.applications', 'FastAPI.__init__')
17-
def init_with_instana(wrapped, instance, args, kwargs):
18-
middleware = kwargs.get('middleware')
19-
if middleware is None:
20-
kwargs['middleware'] = [Middleware(InstanaASGIMiddleware)]
21-
elif isinstance(middleware, list):
22-
middleware.append(Middleware(InstanaASGIMiddleware))
17+
if hasattr(fastapi, '__version__') and \
18+
(LooseVersion(fastapi.__version__) >= LooseVersion('0.51.0')):
19+
20+
@wrapt.patch_function_wrapper('fastapi.applications', 'FastAPI.__init__')
21+
def init_with_instana(wrapped, instance, args, kwargs):
22+
middleware = kwargs.get('middleware')
23+
if middleware is None:
24+
kwargs['middleware'] = [Middleware(InstanaASGIMiddleware)]
25+
elif isinstance(middleware, list):
26+
middleware.append(Middleware(InstanaASGIMiddleware))
2327

24-
return wrapped(*args, **kwargs)
28+
return wrapped(*args, **kwargs)
2529

26-
logger.debug("Instrumenting FastAPI")
30+
logger.debug("Instrumenting FastAPI")
2731

28-
# Reload GUnicorn when we are instrumenting an already running application
29-
if "INSTANA_MAGIC" in os.environ and running_in_gunicorn():
30-
os.kill(os.getpid(), signal.SIGHUP)
32+
# Reload GUnicorn when we are instrumenting an already running application
33+
if "INSTANA_MAGIC" in os.environ and running_in_gunicorn():
34+
os.kill(os.getpid(), signal.SIGHUP)
35+
else:
36+
logger.debug("Instana supports FastAPI package versions 0.51.0 and newer. Skipping.")
3137

3238
except ImportError:
33-
pass
39+
pass

0 commit comments

Comments
 (0)