From 0eafd06c42222b356b968d4c0e4967c5312feb9c Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 22 Nov 2014 18:38:57 -0800 Subject: [PATCH] rangecache: use tmp dir for cache and delete on exit --- pywb/webapp/rangecache.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pywb/webapp/rangecache.py b/pywb/webapp/rangecache.py index e9f51a16..b69fe4f9 100644 --- a/pywb/webapp/rangecache.py +++ b/pywb/webapp/rangecache.py @@ -2,12 +2,14 @@ from pywb.utils.statusandheaders import StatusAndHeaders from pywb.utils.loaders import LimitReader from pywb.framework.cache import create_cache -from tempfile import NamedTemporaryFile +from tempfile import NamedTemporaryFile, mkdtemp import yaml import os import re +import atexit + #================================================================= class RangeCache(object): @@ -35,6 +37,14 @@ class RangeCache(object): def __init__(self): self.cache = create_cache() + self.temp_dir = mkdtemp(prefix='_pywbcache') + atexit.register(self.cleanup) + + def cleanup(self): + if self.temp_dir: + import shutil + print('Removing: ' + self.temp_dir) + shutil.rmtree(self.temp_dir, True) def is_ranged(self, wbrequest): url = wbrequest.wb_url.url @@ -83,9 +93,10 @@ class RangeCache(object): # only cache 200 responses if not response.status_headers.get_statuscode().startswith('200'): + print('NON 200 RESP') return response.status_headers, response.body - with NamedTemporaryFile(delete=False) as fh: + with NamedTemporaryFile(delete=False, dir=self.temp_dir) as fh: for obj in response.body: fh.write(obj) @@ -128,11 +139,6 @@ class RangeCache(object): else: status_headers = StatusAndHeaders('200 OK', spec['headers']) - #status_headers.headers.append(('Accept-Ranges', 'bytes')) - #status_headers.headers.append(('Access-Control-Allow-Credentials', 'true')) - #status_headers.headers.append(('Access-Control-Allow-Origin', 'http://localhost:8080')) - #status_headers.headers.append(('Timing-Allow-Origin', 'http://localhost:8080')) - status_headers.replace_header('Content-Length', str(maxlen)) return status_headers, read_range()