Set the post process cache when finished instead of one by one.

This should prevent a race condition if running collectstatic is
canceled or its cache is accessed from other processes, leaving the
cache in a corrupt state.
This commit is contained in:
Jannis Leidel 2012-05-10 18:29:34 +02:00
parent c2e1ecb4b1
commit 1c1a229632
1 changed files with 6 additions and 3 deletions

View File

@ -189,8 +189,8 @@ class CachedFilesMixin(object):
if dry_run:
return
# delete cache of all handled paths
self.cache.delete_many([self.cache_key(path) for path in paths])
# where to store the new paths
hashed_paths = {}
# build a list of adjustable files
matches = lambda path: matches_patterns(path, self._patterns.keys())
@ -239,9 +239,12 @@ class CachedFilesMixin(object):
hashed_name = force_unicode(saved_name.replace('\\', '/'))
# and then set the cache accordingly
self.cache.set(self.cache_key(name), hashed_name)
hashed_paths[self.cache_key(name)] = hashed_name
yield name, hashed_name, processed
# Finally set the cache
self.cache.set_many(hashed_paths)
class CachedStaticFilesStorage(CachedFilesMixin, StaticFilesStorage):
"""