multiple tries loading counters
authorJan Szejko <janek37@gmail.com>
Mon, 29 May 2017 10:26:38 +0000 (12:26 +0200)
committerJan Szejko <janek37@gmail.com>
Mon, 29 May 2017 10:26:38 +0000 (12:26 +0200)
src/catalogue/helpers.py

index 97c63d0..4dd7bda 100644 (file)
@@ -28,8 +28,17 @@ def get_top_level_related_tags(tags, categories=None):
     global _COUNTERS, _COUNTER_TIME
     # First, check that we have a valid and recent version of the counters.
     if getmtime(settings.CATALOGUE_COUNTERS_FILE) > _COUNTER_TIME:
-        with open(settings.CATALOGUE_COUNTERS_FILE) as f:
-            _COUNTERS = cPickle.load(f)
+        for i in xrange(10):
+            try:
+                with open(settings.CATALOGUE_COUNTERS_FILE) as f:
+                    _COUNTERS = cPickle.load(f)
+            except (EOFError, ValueError):
+                if i < 9:
+                    continue
+                else:
+                    raise
+            else:
+                break
 
     tagids = tuple(sorted(t.pk for t in tags))
     try: