Coverage for quibble/cache.py: 88%
14 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-08-07 07:21 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-08-07 07:21 +0000
1from pymemcache.client.base import Client
2from pymemcache.client.hash import HashClient
3from pymemcache.client.retrying import RetryingClient
4from pymemcache.exceptions import MemcacheUnexpectedCloseError
7CONNECT_TIMEOUT = 2.0
8SOCKET_TIMEOUT = 2.0
9KEY_PREFIX = 'quibble/v0/'
12def client(server, retries=3, retry_delay=0.5):
13 """
14 Returns a memcached client.
16 server: Memcached server to use for caching, e.g. 'localhost:11211'.
17 Multiple servers can be specified (separated by ',') for
18 clustering/failover.
19 """
21 def new_client(**kwargs):
22 servers = server.split(',')
23 if len(servers) > 1: 23 ↛ 24line 23 didn't jump to line 24 because the condition on line 23 was never true
24 return HashClient(servers, **kwargs)
25 else:
26 return Client(server, **kwargs)
28 return RetryingClient(
29 new_client(
30 connect_timeout=CONNECT_TIMEOUT,
31 timeout=SOCKET_TIMEOUT,
32 key_prefix=KEY_PREFIX,
33 ),
34 attempts=retries,
35 retry_delay=retry_delay,
36 retry_for=[MemcacheUnexpectedCloseError],
37 )