Closed viktorfreiman closed 5 months ago
I am using your fastapi exemple.
When I change https://github.com/Krukov/cashews/blob/7ab613f31a9dc707526b3315e14393a22b149257/examples/fastapi_app.py#L26 to
cache.setup("redis://0.0.0.0", client_side=True, middlewares=(metrics_middleware,))
I get this error:
INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: 127.0.0.1:53842 - "GET / HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application + Exception Group Traceback (most recent call last): | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups | yield | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 190, in __call__ | async with anyio.create_task_group() as task_group: | File "/home/vscode/.local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 678, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/home/vscode/.local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi | result = await app( # type: ignore[func-returns-value] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/home/vscode/.local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__ | return await self.app(scope, receive, send) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/home/vscode/.local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__ | await super().__call__(scope, receive, send) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__ | await self.middleware_stack(scope, receive, send) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__ | raise exc | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__ | await self.app(scope, receive, _send) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__ | with collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__ | self.gen.throw(typ, value, traceback) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/_utils.py", line 91, in collapse_excgroups | raise exc | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/workspaces/popins-v3/fastapi_app_2.py", line 64, in add_process_time_header | response = await call_next(request) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next | raise app_exc | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro | await self.app(scope, receive_or_disconnect, send_no_error) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__ | with collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__ | self.gen.throw(typ, value, traceback) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/_utils.py", line 91, in collapse_excgroups | raise exc | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/home/vscode/.local/lib/python3.11/site-packages/cashews/contrib/fastapi.py", line 59, in dispatch | response = await call_next(request) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next | raise app_exc | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro | await self.app(scope, receive_or_disconnect, send_no_error) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__ | with collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__ | self.gen.throw(typ, value, traceback) | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/_utils.py", line 91, in collapse_excgroups | raise exc | File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/home/vscode/.local/lib/python3.11/site-packages/cashews/contrib/fastapi.py", line 133, in dispatch | response.headers[_ETAG_HEADER] = await self._get_etag(set_key) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/home/vscode/.local/lib/python3.11/site-packages/cashews/contrib/fastapi.py", line 143, in _get_etag | etag = blake2s(data).hexdigest() | ^^^^^^^^^^^^^ | TypeError: object supporting the buffer API required +------------------------------------ During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/vscode/.local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__ await self.middleware_stack(scope, receive, send) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__ raise exc File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__ with collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__ self.gen.throw(typ, value, traceback) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/_utils.py", line 91, in collapse_excgroups raise exc File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/workspaces/popins-v3/fastapi_app_2.py", line 64, in add_process_time_header response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next raise app_exc File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__ with collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__ self.gen.throw(typ, value, traceback) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/_utils.py", line 91, in collapse_excgroups raise exc File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.local/lib/python3.11/site-packages/cashews/contrib/fastapi.py", line 59, in dispatch response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next raise app_exc File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__ with collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__ self.gen.throw(typ, value, traceback) File "/home/vscode/.local/lib/python3.11/site-packages/starlette/_utils.py", line 91, in collapse_excgroups raise exc File "/home/vscode/.local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.local/lib/python3.11/site-packages/cashews/contrib/fastapi.py", line 133, in dispatch response.headers[_ETAG_HEADER] = await self._get_etag(set_key) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.local/lib/python3.11/site-packages/cashews/contrib/fastapi.py", line 143, in _get_etag etag = blake2s(data).hexdigest() ^^^^^^^^^^^^^ TypeError: object supporting the buffer API required
When I remove
app.add_middleware(CacheEtagMiddleware)
It works again but without etag
Just saw that you released 7.0.0 and now the bug is gone. Was using version 6.4.0
I am using your fastapi exemple.
When I change https://github.com/Krukov/cashews/blob/7ab613f31a9dc707526b3315e14393a22b149257/examples/fastapi_app.py#L26 to
I get this error:
When I remove
It works again but without etag