diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2010-04-16 11:11:55 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2010-04-16 11:11:55 +0000 |
| commit | 94a968cfc60e16d3fa8180ae76dce35bc931e374 (patch) | |
| tree | c38208a0208ba583f17f7585b6bcf42a32cd25c9 /django/core | |
| parent | a213599db7781c8945f161fd77e5c4b706b99853 (diff) | |
Fixed #13357 -- Minor changes to get Django running under PyPy. Thanks to Alex Gaynor for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12991 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core')
| -rw-r--r-- | django/core/cache/backends/filebased.py | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/django/core/cache/backends/filebased.py b/django/core/cache/backends/filebased.py index 91f0b78fa6..fe833336d0 100644 --- a/django/core/cache/backends/filebased.py +++ b/django/core/cache/backends/filebased.py @@ -42,13 +42,15 @@ class CacheClass(BaseCache): fname = self._key_to_file(key) try: f = open(fname, 'rb') - exp = pickle.load(f) - now = time.time() - if exp < now: + try: + exp = pickle.load(f) + now = time.time() + if exp < now: + self._delete(fname) + else: + return pickle.load(f) + finally: f.close() - self._delete(fname) - else: - return pickle.load(f) except (IOError, OSError, EOFError, pickle.PickleError): pass return default @@ -67,9 +69,12 @@ class CacheClass(BaseCache): os.makedirs(dirname) f = open(fname, 'wb') - now = time.time() - pickle.dump(now + timeout, f, pickle.HIGHEST_PROTOCOL) - pickle.dump(value, f, pickle.HIGHEST_PROTOCOL) + try: + now = time.time() + pickle.dump(now + timeout, f, pickle.HIGHEST_PROTOCOL) + pickle.dump(value, f, pickle.HIGHEST_PROTOCOL) + finally: + f.close() except (IOError, OSError): pass @@ -93,14 +98,16 @@ class CacheClass(BaseCache): fname = self._key_to_file(key) try: f = open(fname, 'rb') - exp = pickle.load(f) - now = time.time() - if exp < now: + try: + exp = pickle.load(f) + now = time.time() + if exp < now: + self._delete(fname) + return False + else: + return True + finally: f.close() - self._delete(fname) - return False - else: - return True except (IOError, OSError, EOFError, pickle.PickleError): return False |
