sentry-python icon indicating copy to clipboard operation
sentry-python copied to clipboard

Internal Server Error on content-type json

Open bert2002 opened this issue 3 years ago • 0 comments

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)

bert2002 avatar Oct 16 '22 08:10 bert2002