Add a cache
This commit is contained in:
parent
6877220a4c
commit
c8baea8646
1 changed files with 11 additions and 0 deletions
11
ipserv.py
11
ipserv.py
|
@ -1,10 +1,12 @@
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import time
|
||||||
from flask import Flask, request
|
from flask import Flask, request
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
cache = {}
|
||||||
|
|
||||||
|
|
||||||
@app.get("/")
|
@app.get("/")
|
||||||
|
@ -13,6 +15,14 @@ def ip():
|
||||||
ip = request.headers["X-Forwarded-For"]
|
ip = request.headers["X-Forwarded-For"]
|
||||||
else:
|
else:
|
||||||
ip = request.remote_addr
|
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)
|
logging.info("looking up IP info for %s", ip)
|
||||||
try:
|
try:
|
||||||
response = requests.get(
|
response = requests.get(
|
||||||
|
@ -44,4 +54,5 @@ def ip():
|
||||||
data.pop("legalese", None)
|
data.pop("legalese", None)
|
||||||
data.pop("source", None)
|
data.pop("source", None)
|
||||||
data.pop("brexitRequired", None)
|
data.pop("brexitRequired", None)
|
||||||
|
cache[ip] = [data, time.time()]
|
||||||
return data, response.status_code
|
return data, response.status_code
|
||||||
|
|
Reference in a new issue