summaryrefslogtreecommitdiff
path: root/ick2/blob_store.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-03-24 17:41:45 +0200
committerLars Wirzenius <liw@liw.fi>2018-03-24 19:09:18 +0200
commita3ef8c3ddfb24d78431172f84015d02422fa9f99 (patch)
treeff954dfdcaf368e23c9526cf8093262780fc9930 /ick2/blob_store.py
parent78d9c80226c52bcd70e27e7ee2a3a7754f644b53 (diff)
downloadick2-a3ef8c3ddfb24d78431172f84015d02422fa9f99.tar.gz
Change: handle up/downloads of large blobs
Diffstat (limited to 'ick2/blob_store.py')
-rw-r--r--ick2/blob_store.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/ick2/blob_store.py b/ick2/blob_store.py
index 7d02cbf..343b018 100644
--- a/ick2/blob_store.py
+++ b/ick2/blob_store.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2017 Lars Wirzenius
+# Copyright (C) 2017-2018 Lars Wirzenius
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@@ -34,18 +34,27 @@ class BlobStore:
os.makedirs(self._blobdir)
def store_blob(self, name, blob):
- filename = self._blob_filename(name)
+ filename = self.blob_filename(name)
ick2.log.log(
'trace', msg_text='store_blob', name=name, filename=filename)
with open(filename, 'wb') as f:
f.write(blob)
+ def store_blob_from_reader(self, name, func):
+ max_size = 1024**2
+ filename = self.blob_filename(name)
+ ick2.log.log(
+ 'trace', msg_text='store_blob', name=name, filename=filename)
+ with open(filename, 'wb') as f:
+ for data in func(max_size):
+ f.write(data)
+
def get_blob(self, name):
- filename = self._blob_filename(name)
+ filename = self.blob_filename(name)
ick2.log.log(
'trace', msg_text='get_blob', name=name, filename=filename)
with open(filename, 'rb') as f:
return f.read()
- def _blob_filename(self, name):
- return os.path.join(self._blobdir, name)
+ def blob_filename(self, name):
+ return os.path.abspath(os.path.join(self._blobdir, name))