comparison doc/installation.txt @ 6814:3f60a71b0812

Summary: Support selecion session/otk data store. Add redis as data store. Allow admin to select the backend data store. Compatibility matrix: main\/ session>| anydbm | sqlite | redis | mysql | postgresql | anydbm | D | | X | | | sqlite | X | D | X | | | mysql | | | | D | | postgresql | | | | | D | --------------------------------------------------------------+ D - default if unconfigured, X - compatible choice DETAILS roundup/configuration.py: add config.ini section sessiondb with settings: backend and redis_url. CHANGES.txt, doc/admin_guide.txt, doc/installation.txt, doc/upgrading.txt: doc on config of session db and redis. Plus some other fixes: admin - clarified why we do not drop __words and __testids table in native-fts conversion. TYpo fix. upgrading - doc how you can keep using anydbm for session data with sqlite. Fix dupe sentence in an upgrading config.ini section. roundup/backends/back_anydbm.py, roundup/backends/back_sqlite.py: code to support redis, redis/anydbm backends respectively. roundup/backends/sessions_redis.py new storage backend for redis. roundup/rest.py, roundup/cgi/actions.py, roundup/cgi/templating.py redis uses a different way of calculating lifetime/timestamp. Since expiration of an item occurred if its timestamp was more than 1 week old, code would calculate: now - 1 week + lifetime. But this results in faster expiration in redis if used for lifetime/timestamp. Convert code to use the lifetime() method in BasicDatabase that generates the right timestamp for each backend. test/session_common.py: added tests for more cases, get without default, getall non-existing key etc. timestamp test changed to use new self.get_ts which is overridden in other tests. Test that datatypes survive storage. test/test_redis_session.py: test redis session store with sqlite and anydbm primary databases test/test_anydbm.py, test/test_sqlite.py add test to make sure the databases are properly set up sqlite - add test cases where anydbm is used as datastore anydbm - remove updateTimestamp override add get_ts(). test/test_config.py tests on redis_url and compatibility on choice of sessiondb backend .travis.yml: add redis db and redis-py
author John Rouillard <rouilj@ieee.org>
date Thu, 04 Aug 2022 14:41:58 -0400
parents a24ec63759f6
children 3de5a14762ab
comparison
equal deleted inserted replaced
6813:6b636fb29740 6814:3f60a71b0812
135 Roundup's responses can always be compressed with gzip from the 135 Roundup's responses can always be compressed with gzip from the
136 Python standard library. Also nginx and various wsgi server can 136 Python standard library. Also nginx and various wsgi server can
137 compress the response from roundup as they transmit/proxy it to the 137 compress the response from roundup as they transmit/proxy it to the
138 client. 138 client.
139 139
140 redis
141 Storing ephemeral data: session keys, CSRF tokens etc. can be
142 performance bottleneck. You can choose to deploy a Redis_ database
143 using the redis-py_ pypi package. See the section on
144 `Using Redis for Session Databases`_ in the `administration
145 guide`_ for details.
146
140 Windows Service 147 Windows Service
141 You can run Roundup as a Windows service if pywin32_ is installed. 148 You can run Roundup as a Windows service if pywin32_ is installed.
142 Otherwise it must be started manually. 149 Otherwise it must be started manually.
150
151 .. _Using Redis for Session Databases:
152 admin_guide.html#using-redis-for-session-databases
143 153
144 Getting Roundup 154 Getting Roundup
145 =============== 155 ===============
146 156
147 .. note:: 157 .. note::
1768 .. _pyjwt: https://pypi.org/project/PyJWT/ 1778 .. _pyjwt: https://pypi.org/project/PyJWT/
1769 .. _pyopenssl: https://pypi.org/project/pyOpenSSL/ 1779 .. _pyopenssl: https://pypi.org/project/pyOpenSSL/
1770 .. _pysqlite: https://pysqlite.org/ 1780 .. _pysqlite: https://pysqlite.org/
1771 .. _pytz: https://pypi.org/project/pytz/ 1781 .. _pytz: https://pypi.org/project/pytz/
1772 .. _pywin32: https://pypi.org/project/pywin32/ 1782 .. _pywin32: https://pypi.org/project/pywin32/
1783 .. _Redis: https://redis.io
1784 .. _redis-py: https://pypi.org/project/redis/
1773 .. _Whoosh: https://whoosh.readthedocs.org/en/latest 1785 .. _Whoosh: https://whoosh.readthedocs.org/en/latest
1774 .. _Xapian: https://xapian.org/ 1786 .. _Xapian: https://xapian.org/
1775 .. _zstd: https://pypi.org/project/zstd/ 1787 .. _zstd: https://pypi.org/project/zstd/

Roundup Issue Tracker: http://roundup-tracker.org/