Fix aiohttp

This commit is contained in:
Nexus 2024-04-19 11:03:17 +01:00
parent 7c19b3f324
commit 814e9184de
Signed by: nex
GPG key ID: 0FA334385D0B689F

View file

@ -14,7 +14,8 @@ logging.basicConfig(level=logging.INFO)
async def lifespan(_app: FastAPI):
async with aiohttp.ClientSession(
"https://ip.shronk.tech",
connector=aiohttp.TCPConnector(limit=2048)
connector=aiohttp.TCPConnector(limit=2048),
raise_for_status=True
) as client:
_app.state.session = client
yield
@ -50,19 +51,18 @@ async def ip(
logging.info("looking up IP info for %s", ip)
try:
async with app.state.session.get(f"/lookup?ip={ip}") as response:
response.raise_for_status()
data = await response.json()
except Exception as e:
logging.error("Failed to get data for %s: %s", ip, e, exc_info=True)
raise HTTPException(500, "Failed to get upstream data.")
except json.JSONDecodeError as e:
logging.error("Failed to parse data for %s: %s", ip, e, exc_info=True)
raise HTTPException(500, "Failed to parse upstream response.")
except Exception as e:
logging.error("Failed to get data for %s: %s", ip, e, exc_info=True)
raise HTTPException(500, "Failed to get upstream data.")
logging.info("%s -> %r", ip, data)
data["ip"] = ip
data.pop("legalese", None)
data.pop("source", None)
data.pop("brexitRequired", None)
if response.status_code == 200:
if response.status == 200:
app.state.cache[ip] = [data, time.time()]
return JSONResponse(data, response.status_code)
return JSONResponse(data, response.status)