import hashlib import io import json import os from django.core.files.storage import default_storage import googlemaps _client = googlemaps.Client(key=os.environ.get("GOOGLE_GEOCODING_API_KEY")) class Client: def geocode(self, address): filename = hashlib.sha1(address.encode("utf-8")).hexdigest() filepath = f".geocodecache/{filename}" if default_storage.exists(filepath): fp = default_storage.open(filepath) return json.load(fp) resp = _client.geocode(address) fp = io.StringIO() json.dump(resp, fp) default_storage.save(filepath, fp) return resp