Add notes on beaker config caching
This commit is contained in:
parent
002cae6515
commit
c7f585dfed
|
@ -48,9 +48,9 @@ DB if present, falling back to the file value if that exists.
|
||||||
File vs. DB Setting Names
|
File vs. DB Setting Names
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
You may have noticed that the SQL examples above, and the examples used in
|
You may have noticed that the SQL examples above, and the examples
|
||||||
:doc:`syntax` are really for the same 'app_title' setting, but there is a key
|
used in :doc:`syntax` are really for the same ``app_title`` setting,
|
||||||
difference in naming.
|
but there is a key difference in naming.
|
||||||
|
|
||||||
So in a config file you might have this snippet to define a setting::
|
So in a config file you might have this snippet to define a setting::
|
||||||
|
|
||||||
|
@ -84,3 +84,67 @@ specify a flag when reading the value, for example:
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
config.get('rattail', 'app_title', usedb=False)
|
config.get('rattail', 'app_title', usedb=False)
|
||||||
|
|
||||||
|
|
||||||
|
DB Settings Cache
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
One downside of reading config values from the DB settings table, is
|
||||||
|
the number of queries involved, as each call to ``config.get()`` would
|
||||||
|
normally involve a separate SQL query. (Not only that, but unless a
|
||||||
|
DB session is passed to ``config.get()`` a new one will be made just
|
||||||
|
for the query.)
|
||||||
|
|
||||||
|
To help with this, you can enable caching for the DB settings. This
|
||||||
|
should "just work" as expected; i.e. calls to ``config.get()`` need
|
||||||
|
not change. (Although there's no point in passing a DB session when
|
||||||
|
caching is enabled.)
|
||||||
|
|
||||||
|
To turn on the caching, add to your config file::
|
||||||
|
|
||||||
|
[rattail.config]
|
||||||
|
beaker_cache.enabled = true
|
||||||
|
|
||||||
|
By default this cache will be file-based, storage for which is at
|
||||||
|
e.g. ``/srv/envs/poser/app/cache/config/`` although you can override
|
||||||
|
the paths if you prefer::
|
||||||
|
|
||||||
|
[rattail.config]
|
||||||
|
beaker_cache.enabled = true
|
||||||
|
beaker_cache.data_dir = /somewhere/else/data
|
||||||
|
beaker_cache.lock_dir = /somewhere/else/lock
|
||||||
|
|
||||||
|
memcached
|
||||||
|
=========
|
||||||
|
|
||||||
|
If you're not crazy about caching to disk and would prefer to use
|
||||||
|
`memcached`_ as the backend instead, first install that:
|
||||||
|
|
||||||
|
.. _memcached: https://www.memcached.org/
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
sudo apt install memcached
|
||||||
|
|
||||||
|
Then install the Python dependencies to your virtual environment:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
cd /srv/envs/poser
|
||||||
|
source bin/activate
|
||||||
|
pip install 'rattail[memcached]'
|
||||||
|
|
||||||
|
And finally add to your config file::
|
||||||
|
|
||||||
|
[rattail.config]
|
||||||
|
beaker_cache.enabled = true
|
||||||
|
beaker_cache.type = ext:memcached
|
||||||
|
beaker_cache.url = 127.0.0.1:11211
|
||||||
|
|
||||||
|
Rattail will try to come up with a unique namespace to use for the
|
||||||
|
cache; this is needed in situations where the same ``memcached``
|
||||||
|
service is handling multiple "separate" Rattail apps. You can also
|
||||||
|
explicitly set the namespace to use, e.g.::
|
||||||
|
|
||||||
|
[rattail.config]
|
||||||
|
beaker_cache.namespace = my_custom_namespace
|
||||||
|
|
Loading…
Reference in a new issue