infiniflow/ragflow · error · Exception

Invalid rate_limit.per: {per}

Error message

Invalid rate_limit.per: {per}

What it means

Error "Invalid rate_limit.per: {per}" thrown in infiniflow/ragflow.

Source

Thrown at api/apps/restful_apis/agent_api.py:1991

        """Simple in-memory rate limiting."""
        rl = security_cfg.get("rate_limit")
        if not rl:
            rl = {"limit": 60, "per": "minute"}

        limit = int(rl.get("limit", 60))
        if limit <= 0:
            raise Exception("rate_limit.limit must be > 0")
        per = rl.get("per", "minute")

        window = {
            "second": 1,
            "minute": 60,
            "hour": 3600,
            "day": 86400,
        }.get(per)

        if not window:
            raise Exception(f"Invalid rate_limit.per: {per}")

        capacity = limit
        rate = limit / window
        cost = 1

        key = f"rl:tb:{agent_id}"
        now = time.time()

        try:
            from rag.utils.redis_conn import REDIS_CONN

            res = REDIS_CONN.lua_token_bucket(
                keys=[key],
                args=[capacity, rate, now, cost],
                client=REDIS_CONN.REDIS,
            )

            allowed = int(res[0])

View on GitHub (pinned to 554fb1133a)

Solutions

  1. Use a supported rate_limit.per unit (e.g. 'second', 'minute', 'hour').

Example fix

webhook_config = {'rate_limit': {'limit': 60, 'per': 'minute'}}

When it happens

Trigger: Thrown at api/apps/restful_apis/agent_api.py:1991 when the library encounters an invalid state.

Common situations: The rate limit period uses an unsupported time unit; choosing a documented unit prevents this error.


AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15). Data as JSON: /api/errors/89fb3df87f4d8110. Report an issue: GitHub.