Skip to content

Commit 1de93aa

Browse files
4383sqla-tester
authored andcommitted
Add support of dead_retry and socket_timeout for memcached backend
Added :paramref:`.MemcacheArgs.dead_retry` and :paramref:`.MemcacheArgs.socket_timeout` to the dictionary of additional keyword arguments that will be passed directly to ``GenericMemcachedBackend()``. Thanks to François Rigault for assistance. Closes: #223 Co-Authored-By: François Rigault <frigo@amadeus.com> Closes: #224 Pull-request: #224 Pull-request-sha: 5210f8e Change-Id: I058a52e1c3561508763d036e7827b464b2b734d7
1 parent 06faf18 commit 1de93aa

3 files changed

Lines changed: 41 additions & 0 deletions

File tree

docs/build/unreleased/223.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.. change::
2+
:tags: usecase, memcached
3+
:tickets: 223
4+
5+
Added :paramref:`.MemcacheArgs.dead_retry` and
6+
:paramref:`.MemcacheArgs.socket_timeout` to the dictionary of
7+
additional keyword arguments that will be passed
8+
directly to ``GenericMemcachedBackend()``.

dogpile/cache/backends/memcached.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,15 @@ class MemcacheArgs(GenericMemcachedBackend):
221221
"""Mixin which provides support for the 'time' argument to set(),
222222
'min_compress_len' to other methods.
223223
224+
:param dead_retry: Number of seconds memcached server is considered dead
225+
before it is tried again..
226+
227+
.. versionadded:: 1.1.7
228+
229+
:param socket_timeout: Timeout in seconds for every call to a server.
230+
231+
.. versionadded:: 1.1.7
232+
224233
"""
225234

226235
def __init__(self, arguments):
@@ -233,6 +242,10 @@ def __init__(self, arguments):
233242
self.set_arguments["min_compress_len"] = arguments[
234243
"min_compress_len"
235244
]
245+
if "dead_retry" in arguments:
246+
self.set_arguments["dead_retry"] = arguments["dead_retry"]
247+
if "socket_timeout" in arguments:
248+
self.set_arguments["socket_timeout"] = arguments["socket_timeout"]
236249
super(MemcacheArgs, self).__init__(arguments)
237250

238251

tests/cache/test_memcached_backend.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,26 @@ def test_set_min_compress_len(self):
476476
backend.set("foo", "bar")
477477
eq_(backend._clients.memcached.canary, [{"min_compress_len": 20}])
478478

479+
def test_set_dead_retry(self):
480+
config_args = {
481+
"url": "127.0.0.1:11211",
482+
"dead_retry": 4,
483+
}
484+
485+
backend = MockMemcacheBackend(arguments=config_args)
486+
backend.set("foo", "bar")
487+
eq_(backend._clients.memcached.canary, [{"dead_retry": 4}])
488+
489+
def test_set_socket_timeout(self):
490+
config_args = {
491+
"url": "127.0.0.1:11211",
492+
"socket_timeout": 4,
493+
}
494+
495+
backend = MockMemcacheBackend(arguments=config_args)
496+
backend.set("foo", "bar")
497+
eq_(backend._clients.memcached.canary, [{"socket_timeout": 4}])
498+
479499

480500
class LocalThreadTest(TestCase):
481501
def setUp(self):

0 commit comments

Comments
 (0)