From 90e1877591ef5bcff1daade91b2c0ca22ed68725 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Nov 06 2017 09:25:36 +0000 Subject: Use a hash of the config in the key cache Because some configurations can be very long. --- diff --git a/hubs/tests/test_widget_caching.py b/hubs/tests/test_widget_caching.py index 2b9ec36..0a92421 100644 --- a/hubs/tests/test_widget_caching.py +++ b/hubs/tests/test_widget_caching.py @@ -38,7 +38,8 @@ class CachedFunctionTest(APPTest): super(CachedFunctionTest, self).tearDown() def test_get_cache_key(self): - value = '%d|DummyFunction|{"text": "Testing."}' % self.w_instance.idx + value = ('%d|DummyFunction|c7540fbb81683902959eb96e23be42ba' + % self.w_instance.idx) self.assertEqual( self.fn.get_cache_key(), value.encode("ascii"), diff --git a/hubs/widgets/caching.py b/hubs/widgets/caching.py index 6a499a5..69da12c 100644 --- a/hubs/widgets/caching.py +++ b/hubs/widgets/caching.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals import datetime +import hashlib import json import logging @@ -61,7 +62,11 @@ class CachedFunction(object): def get_cache_key(self): key_elements = [str(self.instance.idx), self.__class__.__name__] if self.invalidate_on_config_change: - key_elements.append(json.dumps(self.instance.config)) + key_elements.append( + hashlib.md5( + json.dumps(self.instance.config).encode("utf-8") + ).hexdigest() + ) return "|".join(key_elements).encode('utf-8') def get_data(self):