From 824e2e145ff361b9d60459bcf854f747c3b199e3 Mon Sep 17 00:00:00 2001 From: long2ice Date: Fri, 17 Jun 2022 11:01:47 +0800 Subject: [PATCH] Replace `aioredis` with `redis-py` --- CHANGELOG.md | 4 ++ examples/main.py | 8 ++-- fastapi_cache/backends/redis.py | 2 +- fastapi_cache/coder.py | 2 +- poetry.lock | 76 +++++++++++++++++++++------------ pyproject.toml | 6 +-- 6 files changed, 63 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a5c888..021e393 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.1 +### 0.1.9 + +- Replace `aioredis` with `redis-py`. + ### 0.1.8 - Support `dynamodb` backend. diff --git a/examples/main.py b/examples/main.py index 010496e..466f13e 100644 --- a/examples/main.py +++ b/examples/main.py @@ -1,8 +1,9 @@ from datetime import date, datetime -import aioredis +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 @@ -47,8 +48,9 @@ async def get_datetime(request: Request, response: Response): @app.on_event("startup") async def startup(): - redis = aioredis.from_url(url="redis://localhost") - FastAPICache.init(RedisBackend(redis), prefix="fastapi-cache") + pool = ConnectionPool.from_url(url="redis://localhost") + r = redis.Redis(connection_pool=pool) + FastAPICache.init(RedisBackend(r), prefix="fastapi-cache") if __name__ == "__main__": diff --git a/fastapi_cache/backends/redis.py b/fastapi_cache/backends/redis.py index 00e0972..b5147dc 100644 --- a/fastapi_cache/backends/redis.py +++ b/fastapi_cache/backends/redis.py @@ -1,6 +1,6 @@ from typing import Tuple -from aioredis import Redis +from redis.asyncio.client import Redis from fastapi_cache.backends import Backend diff --git a/fastapi_cache/coder.py b/fastapi_cache/coder.py index a86b95f..0d45079 100644 --- a/fastapi_cache/coder.py +++ b/fastapi_cache/coder.py @@ -64,4 +64,4 @@ class PickleCoder(Coder): @classmethod def decode(cls, value: Any): - return pickle.loads(value) # nosec:B403 + return pickle.loads(value) # nosec:B403,B301 diff --git a/poetry.lock b/poetry.lock index 5bf1880..4d472dd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -57,21 +57,6 @@ category = "main" optional = true python-versions = ">=3.7" -[[package]] -name = "aioredis" -version = "2.0.1" -description = "asyncio (PEP 3156) Redis support" -category = "main" -optional = true -python-versions = ">=3.6" - -[package.dependencies] -async-timeout = "*" -typing-extensions = "*" - -[package.extras] -hiredis = ["hiredis (>=1.0)"] - [[package]] name = "aiosignal" version = "1.2.0" @@ -239,12 +224,26 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "deprecated" +version = "1.2.13" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"] + [[package]] name = "fastapi" version = "0.78.0" @@ -401,7 +400,7 @@ python-versions = "*" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "dev" +category = "main" optional = false python-versions = ">=3.6" @@ -506,7 +505,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "dev" +category = "main" optional = false python-versions = ">=3.6.8" @@ -562,6 +561,25 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "redis" +version = "4.3.3" +description = "Python client for Redis database and key-value store" +category = "main" +optional = true +python-versions = ">=3.6" + +[package.dependencies] +async-timeout = ">=4.0.2" +deprecated = ">=1.2.3" +importlib-metadata = {version = ">=1.0", markers = "python_version < \"3.8\""} +packaging = ">=20.4" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +hiredis = ["hiredis (>=1.0.0)"] +ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] + [[package]] name = "six" version = "1.16.0" @@ -701,15 +719,15 @@ docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [extras] -all = ["aioredis", "aiomcache"] +all = ["redis", "aiomcache"] dynamodb = ["aiobotocore"] memcache = ["aiomcache"] -redis = ["aioredis"] +redis = [] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "87166e8e761098376d7351cbcea72719247cc12f1e2910ae9646d5a923d112cf" +content-hash = "6378a25726f161e9ed3bb538b276102c19e0b9bc3d4f026ebf497f5dd28bc0ce" [metadata.files] aiobotocore = [ @@ -797,10 +815,6 @@ aiomcache = [ {file = "aiomcache-0.7.0-py3-none-any.whl", hash = "sha256:c10de62da84cd1aa5c11b959ff7b6f4fe923699b694b0d71854e6a9867256314"}, {file = "aiomcache-0.7.0.tar.gz", hash = "sha256:a73fd33bc9b4b2dad051d2b7ad0d14087491d87eb0a3d741c9c51a53665bf500"}, ] -aioredis = [ - {file = "aioredis-2.0.1-py3-none-any.whl", hash = "sha256:9ac0d0b3b485d293b8ca1987e6de8658d7dafcca1cddfcd1d506cae8cdebfdd6"}, - {file = "aioredis-2.0.1.tar.gz", hash = "sha256:eaa51aaf993f2d71f54b70527c440437ba65340588afeb786cd87c55c89cd98e"}, -] aiosignal = [ {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, @@ -871,8 +885,12 @@ click = [ {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, +] +deprecated = [ + {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, + {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] fastapi = [ {file = "fastapi-0.78.0-py3-none-any.whl", hash = "sha256:15fcabd5c78c266fa7ae7d8de9b384bfc2375ee0503463a6febbe3bab69d6f65"}, @@ -1187,6 +1205,10 @@ pyyaml = [ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] +redis = [ + {file = "redis-4.3.3-py3-none-any.whl", hash = "sha256:f57f8df5d238a8ecf92f499b6b21467bfee6c13d89953c27edf1e2bc673622e7"}, + {file = "redis-4.3.3.tar.gz", hash = "sha256:2f7a57cf4af15cd543c4394bcbe2b9148db2606a37edba755368836e3a1d053e"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, diff --git a/pyproject.toml b/pyproject.toml index 19f3c8f..f7169db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fastapi-cache2" -version = "0.1.8" +version = "0.1.9" description = "Cache for FastAPI" authors = ["long2ice "] license = "Apache-2.0" @@ -18,7 +18,7 @@ include = ["LICENSE", "README.md"] python = "^3.7" fastapi = "*" uvicorn = "*" -aioredis = {version = "^2.0", optional = true} +redis = {version = "^4.2.0rc1", optional = true} aiomcache = {version = "*", optional = true} pendulum = "*" aiobotocore = {version = "^1.4.1", optional = true} @@ -38,7 +38,7 @@ build-backend = "poetry.masonry.api" redis = ["aioredis"] memcache = ["aiomcache"] dynamodb = ["aiobotocore"] -all = ["aioredis","aiomcache"] +all = ["redis","aiomcache"] [tool.black] line-length = 100