Source code for pyowm.abstractions.owmcache
"""
Module containing the abstract PyOWM cache provider
"""
from abc import ABCMeta, abstractmethod
[docs]class OWMCache(object):
"""
A global abstract class representing a caching provider which can be used
to lookup the JSON responses to the most recently or most frequently issued
OWM Weather API requests.
The purpose of the caching mechanism is to avoid OWM Weather API requests and
therefore network traffic: the implementations should be adapted to the
time/memory requirements of the OWM data clients (i.e: a "slimmer" cache
with lower lookup times but higher miss rates or a "fatter" cache with
higher memory consumption and higher hit rates?).
Subclasses should implement a proper caching algorithms bearing in mind
that different weather data types may have different change rates: in
example, observed weather can change very frequently while long-period
weather forecasts change less frequently.
External caching mechanisms (eg: memcached, redis, etc..) can be used by
extending this class into a proper decorator for the correspondent Python
bindings.
"""
__metaclass__ = ABCMeta
[docs] @abstractmethod
def get(self, request_url):
"""
In case of a hit, returns the JSON string which represents the OWM web
API response to the request being identified by a specific string URL.
:param request_url: an URL that uniquely identifies the request whose
response is to be looked up
:type request_url: str
:returns: a JSON str in case of cache hit or ``None`` otherwise
"""
raise NotImplementedError
[docs] @abstractmethod
def set(self, request_url, response_json):
"""
Adds the specified response_json value to the cache using as a lookup
key the request_url of the request that generated the value.
:param request_url: the request URL
:type request_url: str
:param response_json: the response JSON
:type response_json: str
"""
raise NotImplementedError