def _rate_limited()

in modular_api/index.py [0:0]


    def _rate_limited(self, app: Callable) -> Callable:
        match self._env.mode():
            case ServiceMode.SAAS:
                storage = MemoryStorage()
                # todo fix for saas, either implement storage for dynamodb
                #  or move completely to mongo, or use redis just for broker
                #  or use nginx and set rate limiting there.
                #  This MemoryStorage performs far from perfect when multiple
                #  processes and should not be used
            case _:
                storage = MongoDBStorage(
                    uri=self._env.mongo_uri(),
                    database_name=self._env.mongo_rate_limits_database()
                )
        return RateLimitMiddleware(
            app=app,
            limiter=MovingWindowRateLimiter(storage),
            limit=RateLimitItemPerSecond(self._env.api_calls_per_second_limit())
        )