Tuning
======

This page contains a collection of tips and settings that can be used to
tune your server based upon its users and the other servers it federates
with.

Federating
----------

Environment Variable:

* ``TAKAHE_REMOTE_TIMEOUT`` is the number of seconds Takahē will allow when
  making remote requests to other Fediverse instances. This may also be a
  tuple of four floats to set the timeouts for connect, read, write, and
  pool. Example ``TAKAHE_REMOTE_TIMEOUT='[0.5, 1.0, 1.0, 0.5]'``


Caching
--------

By default Takakē has caching disabled. The caching needs of a server can
varying drastically based upon the number of users and how interconnected
they are with other servers.

Caching is configured by specifying a cache DSN in the environment variable
``TAKAHE_CACHES_DEFAULT``. The DSN format can be any supported by
`django-cache-url <https://github.com/epicserve/django-cache-url>`_, but
some cache backends will require additional Python pacakages not required
by Takahē.

**Examples**

* LocMem cache for a small server: ``locmem://default``
* Memcache cache for a service named ``memcache``  in a docker compose file:
  ``memcached://memcache:11211?key_prefix=takahe``
* Multiple memcache cache servers:
  ``memcached://server1:11211,server2:11211``
