Merge pull request #195 from texastribune/avoid-network-io

Avoid network I/O for remote storages in get_filename
This commit is contained in:
Jannis Leidel
2012-01-30 09:55:25 -08:00

View File

@@ -74,14 +74,18 @@ class Compressor(object):
def get_filename(self, basename): def get_filename(self, basename):
filename = None filename = None
# first try finding the file in the root # first try finding the file in the root
if self.storage.exists(basename): try:
try: # call path first so remote storages don't make it to exists,
filename = self.storage.path(basename) # which would cause network I/O
except NotImplementedError: filename = self.storage.path(basename)
# remote storages don't implement path, access the file locally if not self.storage.exists(basename):
filename = None
except NotImplementedError:
# remote storages don't implement path, access the file locally
if compressor_file_storage.exists(basename):
filename = compressor_file_storage.path(basename) filename = compressor_file_storage.path(basename)
# secondly try to find it with staticfiles (in debug mode) # secondly try to find it with staticfiles (in debug mode)
elif self.finders: if not filename and self.finders:
filename = self.finders.find(urllib.url2pathname(basename)) filename = self.finders.find(urllib.url2pathname(basename))
if filename: if filename:
return filename return filename