long2ice / fastapi-limiter

A request rate limiter for fastapi

Home Page:https://github.com/long2ice/fastapi-limiter

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

What is the behavior if Redis is unavailable?

stephen-lazarionok opened this issue · comments

From experience, any calls to your endpoints fail

lib/python3.11/site-packages/redis/_parsers/base.py", line 221, in _readline
    raise ConnectionError(SERVER_CLOSED_CONNECTION_ERROR)
redis.exceptions.ConnectionError: Connection closed by server.

Is there any plan to fix this?

what i did is just add an exception that return 0 for pexpire if redis is unavailable in depends:RateLimiter class:

    async def _check(self, key):
        redis = FastAPILimiter.redis
        try:
            pexpire = await redis.evalsha(
                FastAPILimiter.lua_sha, 1, key, str(self.times), str(self.milliseconds)
            )
        except:
            logger.exception("Redis is unavaible - ratelimiter disabled")
            return 0
        return pexpire

prolly not the best way, it was a 5minutes craft for when I have maintenance to do, hope that helps,