I'm trying to make a REST API using FastAPI. Consequently, I was trying to implement rate limting for security reasons using slowapi's Limiter module.
Here is my code:
from fastapi import FastAPI, Header
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
from slowapi.errors import RateLimitExceeded
limiter = Limiter(key_func=get_remote_address)
app = FastAPI()
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
@app.get("/")
@limiter.limit("5/minute")
async def main(request: Request):
return {"message": "Hello World"}
Here is the error output:
limiter = Limiter(key_func=get_remote_address)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\91707\AppData\Local\Programs\Python\Python311\Lib\site-packages\slowapi\extension.py", line 157, in __init__
self.app_config = Config(
^^^^^^^
File "C:\Users\91707\AppData\Local\Programs\Python\Python311\Lib\site-packages\starlette\config.py", line 63, in __init__
self.file_values = self._read_file(env_file)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\91707\AppData\Local\Programs\Python\Python311\Lib\site-packages\starlette\config.py", line 122, in _read_file
for line in input_file.readlines():
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\91707\AppData\Local\Programs\Python\Python311\Lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 5: character maps to <undefined>