diff --git a/ipserv.py b/ipserv.py index 810c66d..f892ebd 100644 --- a/ipserv.py +++ b/ipserv.py @@ -1,10 +1,12 @@ import requests import json import logging +import time from flask import Flask, request app = Flask(__name__) logging.basicConfig(level=logging.INFO) +cache = {} @app.get("/") @@ -13,6 +15,14 @@ def ip(): ip = request.headers["X-Forwarded-For"] else: ip = request.remote_addr + + if ip in cache: + data, timestamp = cache[ip] + if time.time() - timestamp < 3600: + logging.info("cache hit for %s", ip) + return data, 200 + logging.info("cache expired for %s", ip) + logging.info("looking up IP info for %s", ip) try: response = requests.get( @@ -44,4 +54,5 @@ def ip(): data.pop("legalese", None) data.pop("source", None) data.pop("brexitRequired", None) + cache[ip] = [data, time.time()] return data, response.status_code