diff --git a/README.rst b/README.rst index 67ec6bf..111752f 100644 --- a/README.rst +++ b/README.rst @@ -180,6 +180,11 @@ Close the console, and then recreate the queue: 'str2' >>> +New functions: +*Available since v0.8.0* + +- ``shrink_disk_usage`` perform a ``VACUUM`` against the sqlite, and rebuild the database file, this usually takes long time and frees a lot of disk space after ``get()`` + Example usage of SQLite3 based ``UniqueQ`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/persistqueue/__init__.py b/persistqueue/__init__.py index 5810b3b..21b4ced 100644 --- a/persistqueue/__init__.py +++ b/persistqueue/__init__.py @@ -1,7 +1,7 @@ # coding=utf-8 __author__ = 'Peter Wang' __license__ = 'BSD' -__version__ = '0.8.0-alpha0' +__version__ = '0.8.0-beta0' from .exceptions import Empty, Full # noqa from .queue import Queue # noqa diff --git a/persistqueue/sqlackqueue.py b/persistqueue/sqlackqueue.py index 80b0197..877ebad 100644 --- a/persistqueue/sqlackqueue.py +++ b/persistqueue/sqlackqueue.py @@ -167,11 +167,6 @@ def clear_acked_data( ) return sql, AckStatus.acked - @sqlbase.with_conditional_transaction - def shrink_disk_usage(self): - sql = """VACUUM""" - return sql, () - @property def _sql_mark_ack_status(self): return self._SQL_MARK_ACK_UPDATE.format( diff --git a/persistqueue/sqlbase.py b/persistqueue/sqlbase.py index 607b3cb..84dba02 100644 --- a/persistqueue/sqlbase.py +++ b/persistqueue/sqlbase.py @@ -212,6 +212,11 @@ def queue(self): datarows.append(item) return datarows + @with_conditional_transaction + def shrink_disk_usage(self): + sql = """VACUUM""" + return sql, () + @property def size(self): return self.total diff --git a/persistqueue/tests/test_sqlackqueue.py b/persistqueue/tests/test_sqlackqueue.py index e455da6..ee81f30 100644 --- a/persistqueue/tests/test_sqlackqueue.py +++ b/persistqueue/tests/test_sqlackqueue.py @@ -75,6 +75,7 @@ def test_open_close_1000(self): # assert adding another one still works q.put('foobar') data = q.get() + q.shrink_disk_usage() self.assertEqual('foobar', data) def test_random_read_write(self): diff --git a/persistqueue/tests/test_sqlqueue.py b/persistqueue/tests/test_sqlqueue.py index 87cfb90..4f5452a 100644 --- a/persistqueue/tests/test_sqlqueue.py +++ b/persistqueue/tests/test_sqlqueue.py @@ -75,6 +75,7 @@ def test_open_close_1000(self): # assert adding another one still works q.put('foobar') data = q.get() + q.shrink_disk_usage() self.assertEqual('foobar', data) def test_random_read_write(self):