Merge branch 'main' into fix/piclke-coder

This commit is contained in:
Ivan Moiseev
2022-12-08 00:23:39 +04:00
12 changed files with 570 additions and 221 deletions

View File

@@ -4,11 +4,11 @@ jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.x"
- uses: abatilo/actions-poetry@v2.1.3
- uses: abatilo/actions-poetry@v2.1.6
- name: Config poetry
run: poetry config experimental.new-installer false
- name: CI

View File

@@ -42,6 +42,7 @@ async def get_date():
async def get_datetime(request: Request, response: Response):
return {"now": pendulum.now()}
@app.get("/sync-me")
@cache(namespace="test")
def sync_me():

View File

@@ -4,12 +4,13 @@ import pendulum
import redis.asyncio as redis
import uvicorn
from fastapi import FastAPI
from redis.asyncio.connection import ConnectionPool
from starlette.requests import Request
from starlette.responses import Response
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from redis.asyncio.connection import ConnectionPool
from starlette.requests import Request
from starlette.responses import Response
from fastapi_cache import FastAPICache
from fastapi_cache.backends.redis import RedisBackend
from fastapi_cache.coder import PickleCoder
@@ -18,10 +19,11 @@ from fastapi_cache.decorator import cache
app = FastAPI()
app.mount(
path='/static',
app=StaticFiles(directory='./'), name='static',
path="/static",
app=StaticFiles(directory="./"),
name="static",
)
templates = Jinja2Templates(directory='./')
templates = Jinja2Templates(directory="./")
ret = 0
@@ -65,12 +67,10 @@ async def get_datetime(request: Request, response: Response):
return pendulum.now()
@app.get('/html', response_class=HTMLResponse)
@app.get("/html", response_class=HTMLResponse)
@cache(expire=60, namespace="html", coder=PickleCoder)
async def cache_html(request: Request):
return templates.TemplateResponse('index.html', {
'request': request, "ret": await get_ret()
})
return templates.TemplateResponse("index.html", {"request": request, "ret": await get_ret()})
@app.on_event("startup")

View File

@@ -1,5 +1,5 @@
import abc
from typing import Tuple, Optional
from typing import Optional, Tuple
class Backend:

View File

@@ -1,5 +1,5 @@
import datetime
from typing import Tuple, Optional
from typing import Optional, Tuple
from aiobotocore.client import AioBaseClient
from aiobotocore.session import get_session

View File

@@ -1,4 +1,4 @@
from typing import Tuple, Optional
from typing import Optional, Tuple
from aiomcache import Client

View File

@@ -1,4 +1,4 @@
from typing import Tuple, Optional
from typing import Optional, Tuple
from redis.asyncio.client import Redis

View File

@@ -1,7 +1,7 @@
import inspect
import sys
from functools import wraps
from typing import Any, Awaitable, Callable, Optional, TypeVar, Type
from typing import Any, Awaitable, Callable, Optional, Type, TypeVar
if sys.version_info >= (3, 10):
from typing import ParamSpec
@@ -15,7 +15,6 @@ from starlette.responses import Response
from fastapi_cache import FastAPICache
from fastapi_cache.coder import Coder
P = ParamSpec("P")
R = TypeVar("R")
@@ -113,7 +112,7 @@ def cache(
request=request,
response=response,
args=args,
kwargs=copy_kwargs
kwargs=copy_kwargs,
)
else:
cache_key = key_builder(
@@ -122,7 +121,7 @@ def cache(
request=request,
response=response,
args=args,
kwargs=copy_kwargs
kwargs=copy_kwargs,
)
ttl, ret = await backend.get_with_ttl(cache_key)

View File

@@ -1,5 +1,5 @@
import hashlib
from typing import Optional, Callable
from typing import Callable, Optional
from starlette.requests import Request
from starlette.responses import Response

743
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,6 +23,7 @@ aiomcache = { version = "*", optional = true }
pendulum = "*"
aiobotocore = { version = "^1.4.1", optional = true }
typing-extensions = { version = ">=4.1.0", markers = "python_version < \"3.10\"" }
aiohttp= { version = ">=3.8.3", markers = "python_version >= \"3.11\""}
[tool.poetry.dev-dependencies]
flake8 = "*"

View File

@@ -3,11 +3,10 @@ from typing import Generator
import pendulum
import pytest
from fastapi_cache import FastAPICache
from starlette.testclient import TestClient
from examples.in_memory.main import app
from fastapi_cache import FastAPICache
from fastapi_cache.backends.inmemory import InMemoryBackend