diff --git a/api/funkwhale_api/instance/nodeinfo.py b/api/funkwhale_api/instance/nodeinfo.py index b671680f5..a40c4e94b 100644 --- a/api/funkwhale_api/instance/nodeinfo.py +++ b/api/funkwhale_api/instance/nodeinfo.py @@ -1,4 +1,4 @@ -import memoize.djangocache +from cache_memoize import cache_memoize from django.urls import reverse @@ -11,9 +11,6 @@ from funkwhale_api.music import utils as music_utils from . import stats -store = memoize.djangocache.Cache("default") -memo = memoize.Memoizer(store, namespace="instance:stats") - def get(): all_preferences = preferences.all() @@ -72,7 +69,7 @@ def get(): } if share_stats: - getter = memo(lambda: stats.get(), max_age=600) + getter = cache_memoize(600, prefix="memoize:instance:stats")(stats.get) statistics = getter() data["usage"]["users"]["total"] = statistics["users"]["total"] data["usage"]["users"]["activeHalfyear"] = statistics["users"][ diff --git a/api/funkwhale_api/musicbrainz/client.py b/api/funkwhale_api/musicbrainz/client.py index ae038f900..8fdf90322 100644 --- a/api/funkwhale_api/musicbrainz/client.py +++ b/api/funkwhale_api/musicbrainz/client.py @@ -1,5 +1,5 @@ -import memoize.djangocache import musicbrainzngs +from cache_memoize import cache_memoize from django.conf import settings from funkwhale_api import __version__ @@ -9,10 +9,6 @@ _api.set_useragent("funkwhale", str(__version__), settings.FUNKWHALE_URL) _api.set_hostname(settings.MUSICBRAINZ_HOSTNAME) -store = memoize.djangocache.Cache("default") -memo = memoize.Memoizer(store, namespace="memoize:musicbrainz") - - def clean_artist_search(query, **kwargs): cleaned_kwargs = {} if kwargs.get("name"): @@ -24,38 +20,59 @@ class API(object): _api = _api class artists(object): - search = memo(clean_artist_search, max_age=settings.MUSICBRAINZ_CACHE_DURATION) - get = memo(_api.get_artist_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION) + search = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:clean_artist_search", + )(clean_artist_search) + get = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:get_artist_by_id", + )(_api.get_artist_by_id) class images(object): - get_front = memo( - _api.get_image_front, max_age=settings.MUSICBRAINZ_CACHE_DURATION - ) + get_front = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:get_image_front", + )(_api.get_image_front) class recordings(object): - search = memo( - _api.search_recordings, max_age=settings.MUSICBRAINZ_CACHE_DURATION - ) - get = memo( - _api.get_recording_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION - ) + search = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:search_recordings", + )(_api.search_recordings) + get = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:get_recording_by_id", + )(_api.get_recording_by_id) class releases(object): - search = memo(_api.search_releases, max_age=settings.MUSICBRAINZ_CACHE_DURATION) - get = memo(_api.get_release_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION) - browse = memo(_api.browse_releases, max_age=settings.MUSICBRAINZ_CACHE_DURATION) + search = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:search_releases", + )(_api.search_releases) + get = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:get_release_by_id", + )(_api.get_release_by_id) + browse = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:browse_releases", + )(_api.browse_releases) # get_image_front = _api.get_image_front class release_groups(object): - search = memo( - _api.search_release_groups, max_age=settings.MUSICBRAINZ_CACHE_DURATION - ) - get = memo( - _api.get_release_group_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION - ) - browse = memo( - _api.browse_release_groups, max_age=settings.MUSICBRAINZ_CACHE_DURATION - ) + search = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:search_release_groups", + )(_api.search_release_groups) + get = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:get_release_group_by_id", + )(_api.get_release_group_by_id) + browse = cache_memoize( + settings.MUSICBRAINZ_CACHE_DURATION, + prefix="memoize:musicbrainz:browse_release_groups", + )(_api.browse_release_groups) # get_image_front = _api.get_image_front diff --git a/api/requirements/base.txt b/api/requirements/base.txt index c4a37b5b4..adbba0f3a 100644 --- a/api/requirements/base.txt +++ b/api/requirements/base.txt @@ -32,8 +32,7 @@ django-rest-auth~=0.9.0 ipython~=7.27.0 mutagen~=1.45.0 -pymemoize~=1.0.0 - +django-cache-memoize~=0.1.0 django-dynamic-preferences~=1.10 python-magic~=0.4.0 channels~=3.0.3 diff --git a/changes/changelog.d/memoize.enhancement b/changes/changelog.d/memoize.enhancement new file mode 100644 index 000000000..998d7f15b --- /dev/null +++ b/changes/changelog.d/memoize.enhancement @@ -0,0 +1,2 @@ +Change unmaintained PyMemoize library to django-cache-memoize +to enable Python 3.10 support