sentry-python
sentry-python copied to clipboard
Internal Server Error on content-type json
How do you use Sentry?
Sentry Saas (sentry.io)
Version
1.9.10
Steps to Reproduce
Using sentry-sdk with fastapi
python integration:
import sentry_sdk
from sentry_sdk.integrations.starlette import StarletteIntegration
from sentry_sdk.integrations.fastapi import FastApiIntegration
sentry_sdk.init(
dsn=os.environ.get('SENTRY_DSN'),
integrations=[
StarletteIntegration(),
FastApiIntegration(),
],
environment=os.environ.get('ENVIRONMENT'),
traces_sample_rate=1.0, # We recommend adjusting this value in production,
send_default_pii=False,
)
Once I remove the sentry integration the application works without any problems. I also noticed the problem with the SDK version 1.9.2.
Expected Result
curl 'http://localhost:8000/bla'
Actual Result
curl 'http://localhost:8000/bla' --header 'Content-Type: application/json'
Internal Server Error
and the log of the application with the trace
api_1 | INFO: 172.20.0.1:38696 - "GET /bla HTTP/1.1" 500 Internal Server Error
api_1 | ERROR: Exception in ASGI application
api_1 | Traceback (most recent call last):
api_1 | File "/usr/local/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
api_1 | result = await app(self.scope, self.receive, self.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
api_1 | return await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/fastapi/applications.py", line 270, in __call__
api_1 | await super().__call__(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 287, in _sentry_patched_asgi_app
api_1 | return await middleware(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/asgi.py", line 126, in _run_asgi3
api_1 | return await self._run_app(scope, lambda: self.app(scope, receive, send))
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/asgi.py", line 176, in _run_app
api_1 | raise exc from None
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/asgi.py", line 171, in _run_app
api_1 | return await callback()
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/applications.py", line 124, in __call__
api_1 | await self.middleware_stack(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
api_1 | raise exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
api_1 | await self.app(scope, receive, _send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 72, in __call__
api_1 | response = await self.dispatch_func(request, call_next)
api_1 | File "/usr/local/lib/python3.10/site-packages/slowapi/middleware.py", line 56, in dispatch
api_1 | response = await call_next(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 46, in call_next
api_1 | raise app_exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 36, in coro
api_1 | await self.app(scope, request.receive, send_stream.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 72, in __call__
api_1 | response = await self.dispatch_func(request, call_next)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette_prometheus/middleware.py", line 57, in dispatch
api_1 | raise e from None
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette_prometheus/middleware.py", line 53, in dispatch
api_1 | response = await call_next(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 46, in call_next
api_1 | raise app_exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 36, in coro
api_1 | await self.app(scope, request.receive, send_stream.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 84, in __call__
api_1 | await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 72, in __call__
api_1 | response = await self.dispatch_func(request, call_next)
api_1 | File "/usr/local/lib/python3.10/site-packages/supertokens_python/framework/fastapi/fastapi_middleware.py", line 53, in dispatch
api_1 | response = await call_next(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 46, in call_next
api_1 | raise app_exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 36, in coro
api_1 | await self.app(scope, request.receive, send_stream.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | [Previous line repeated 6 more times]
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 75, in __call__
api_1 | raise exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 64, in __call__
api_1 | await self.app(scope, receive, sender)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | [Previous line repeated 6 more times]
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 75, in __call__
api_1 | raise exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 64, in __call__
api_1 | await self.app(scope, receive, sender)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
api_1 | raise e
api_1 | File "/usr/local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
api_1 | await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 680, in __call__
api_1 | await route.handle(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 275, in handle
api_1 | await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 65, in app
api_1 | response = await func(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/fastapi.py", line 77, in _sentry_app
api_1 | info = await extractor.extract_request_info()
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 449, in extract_request_info
api_1 | parsed_body = await self.parsed_body()
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 524, in parsed_body
api_1 | json_data = await self.json()
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 503, in json
api_1 | return await self.request.json()
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/requests.py", line 243, in json
api_1 | self._json = json.loads(body)
api_1 | File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
api_1 | return _default_decoder.decode(s)
api_1 | File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
api_1 | obj, end = self.raw_decode(s, idx=_w(s, 0).end())
api_1 | File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode
api_1 | raise JSONDecodeError("Expecting value", s, err.value) from None
api_1 | json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
api_1 | ERROR: Exception in ASGI application
api_1 | (line:404)
api_1 | Traceback (most recent call last):
api_1 | File "/usr/local/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
api_1 | result = await app(self.scope, self.receive, self.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
api_1 | return await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/fastapi/applications.py", line 270, in __call__
api_1 | await super().__call__(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 287, in _sentry_patched_asgi_app
api_1 | return await middleware(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/asgi.py", line 126, in _run_asgi3
api_1 | return await self._run_app(scope, lambda: self.app(scope, receive, send))
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/asgi.py", line 176, in _run_app
api_1 | raise exc from None
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/asgi.py", line 171, in _run_app
api_1 | return await callback()
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/applications.py", line 124, in __call__
api_1 | await self.middleware_stack(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
api_1 | raise exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
api_1 | await self.app(scope, receive, _send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 72, in __call__
api_1 | response = await self.dispatch_func(request, call_next)
api_1 | File "/usr/local/lib/python3.10/site-packages/slowapi/middleware.py", line 56, in dispatch
api_1 | response = await call_next(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 46, in call_next
api_1 | raise app_exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 36, in coro
api_1 | await self.app(scope, request.receive, send_stream.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 72, in __call__
api_1 | response = await self.dispatch_func(request, call_next)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette_prometheus/middleware.py", line 57, in dispatch
api_1 | raise e from None
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette_prometheus/middleware.py", line 53, in dispatch
api_1 | response = await call_next(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 46, in call_next
api_1 | raise app_exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 36, in coro
api_1 | await self.app(scope, request.receive, send_stream.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 84, in __call__
api_1 | await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 72, in __call__
api_1 | response = await self.dispatch_func(request, call_next)
api_1 | File "/usr/local/lib/python3.10/site-packages/supertokens_python/framework/fastapi/fastapi_middleware.py", line 53, in dispatch
api_1 | response = await call_next(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 46, in call_next
api_1 | raise app_exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/base.py", line 36, in coro
api_1 | await self.app(scope, request.receive, send_stream.send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | [Previous line repeated 6 more times]
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 75, in __call__
api_1 | raise exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 64, in __call__
api_1 | await self.app(scope, receive, sender)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 189, in _sentry_exceptionmiddleware_call
api_1 | await old_call(self, scope, receive, send)
api_1 | [Previous line repeated 6 more times]
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 75, in __call__
api_1 | raise exc
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 64, in __call__
api_1 | await self.app(scope, receive, sender)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 98, in _create_span_call
api_1 | await old_call(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
api_1 | raise e
api_1 | File "/usr/local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
api_1 | await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 680, in __call__
api_1 | await route.handle(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 275, in handle
api_1 | await self.app(scope, receive, send)
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 65, in app
api_1 | response = await func(request)
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/fastapi.py", line 77, in _sentry_app
api_1 | info = await extractor.extract_request_info()
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 449, in extract_request_info
api_1 | parsed_body = await self.parsed_body()
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 524, in parsed_body
api_1 | json_data = await self.json()
api_1 | File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/starlette.py", line 503, in json
api_1 | return await self.request.json()
api_1 | File "/usr/local/lib/python3.10/site-packages/starlette/requests.py", line 243, in json
api_1 | self._json = json.loads(body)
api_1 | File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
api_1 | return _default_decoder.decode(s)
api_1 | File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
api_1 | obj, end = self.raw_decode(s, idx=_w(s, 0).end())
api_1 | File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode
api_1 | raise JSONDecodeError("Expecting value", s, err.value) from None
api_1 | json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)