summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2021-04-22 00:00:26 -0500
committerJordan Cook <jordan.cook@pioneer.com>2021-04-22 00:04:30 -0500
commite78ae33b552f6549b86c4c5355d2b8aae13ee369 (patch)
tree2af0091e07e40b76523da0ec4a2a897e3531d4c5
parent40dc1e79d1c75d0007fe74becf75a1dc3e84d6b9 (diff)
downloadrequests-cache-e78ae33b552f6549b86c4c5355d2b8aae13ee369.tar.gz
Store responses for filesystem backend in a 'responses' subdirectory, to avoid deleting redirects.sqlite with clear()
-rw-r--r--requests_cache/backends/filesystem.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/requests_cache/backends/filesystem.py b/requests_cache/backends/filesystem.py
index b7f3e6a..c9fc515 100644
--- a/requests_cache/backends/filesystem.py
+++ b/requests_cache/backends/filesystem.py
@@ -1,7 +1,7 @@
# TODO: Add option for compression?
from contextlib import contextmanager
from os import listdir, makedirs, unlink
-from os.path import abspath, expanduser, isabs, join
+from os.path import abspath, dirname, expanduser, isabs, join
from pathlib import Path
from pickle import PickleError
from shutil import rmtree
@@ -13,8 +13,9 @@ from .sqlite import DbDict
class FileCache(BaseCache):
- """Backend that stores cached responses as files on the local filesystem. Response paths will be
- in the format ``<cache_name>/<cache_key>``. Redirects are stored in a SQLite database.
+ """Backend that stores cached responses as files on the local filesystem.
+ Response paths will be in the format ``<cache_name>/responses/<cache_key>``.
+ Redirects are stored in a SQLite database, located at ``<cache_name>/redirects.sqlite``.
Args:
cache_name: Base directory for cache files
@@ -25,7 +26,8 @@ class FileCache(BaseCache):
def __init__(self, cache_name: Union[Path, str] = 'http_cache', use_temp: bool = False, **kwargs):
super().__init__(**kwargs)
self.responses = FileDict(cache_name, use_temp=use_temp, **kwargs)
- self.redirects = DbDict(join(self.responses.cache_dir, 'redirects.sqlite'), 'redirects', **kwargs)
+ db_path = join(dirname(self.responses.cache_dir), 'redirects.sqlite')
+ self.redirects = DbDict(db_path, 'redirects', **kwargs)
class FileDict(BaseStorage):
@@ -80,7 +82,7 @@ class FileDict(BaseStorage):
def _get_cache_dir(cache_dir: Union[Path, str], use_temp: bool) -> str:
if use_temp and not isabs(cache_dir):
- cache_dir = join(gettempdir(), cache_dir)
+ cache_dir = join(gettempdir(), cache_dir, 'responses')
cache_dir = abspath(expanduser(str(cache_dir)))
makedirs(cache_dir, exist_ok=True)
return cache_dir