summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHervé Beraud <hberaud@redhat.com>2022-06-16 10:56:44 -0400
committersqla-tester <sqla-tester@sqlalchemy.org>2022-06-16 10:56:44 -0400
commit1de93aab14c1274f20c1f44f8adff3b143c864f6 (patch)
treed1ce3714070baae70e6bbe26acba939da10a7c77
parent06faf1820fbb1b39c122253376a82acb6e89d4b1 (diff)
downloaddogpile-cache-1de93aab14c1274f20c1f44f8adff3b143c864f6.tar.gz
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: https://github.com/sqlalchemy/dogpile.cache/pull/224 Pull-request-sha: 5210f8eae297d1dd192aa178434beb9e1eb98387 Change-Id: I058a52e1c3561508763d036e7827b464b2b734d7
-rw-r--r--docs/build/unreleased/223.rst8
-rw-r--r--dogpile/cache/backends/memcached.py13
-rw-r--r--tests/cache/test_memcached_backend.py20
3 files changed, 41 insertions, 0 deletions
diff --git a/docs/build/unreleased/223.rst b/docs/build/unreleased/223.rst
new file mode 100644
index 0000000..391acc2
--- /dev/null
+++ b/docs/build/unreleased/223.rst
@@ -0,0 +1,8 @@
+.. change::
+ :tags: usecase, memcached
+ :tickets: 223
+
+ Added :paramref:`.MemcacheArgs.dead_retry` and
+ :paramref:`.MemcacheArgs.socket_timeout` to the dictionary of
+ additional keyword arguments that will be passed
+ directly to ``GenericMemcachedBackend()``.
diff --git a/dogpile/cache/backends/memcached.py b/dogpile/cache/backends/memcached.py
index 7c247bc..46d5d70 100644
--- a/dogpile/cache/backends/memcached.py
+++ b/dogpile/cache/backends/memcached.py
@@ -221,6 +221,15 @@ class MemcacheArgs(GenericMemcachedBackend):
"""Mixin which provides support for the 'time' argument to set(),
'min_compress_len' to other methods.
+ :param dead_retry: Number of seconds memcached server is considered dead
+ before it is tried again..
+
+ .. versionadded:: 1.1.7
+
+ :param socket_timeout: Timeout in seconds for every call to a server.
+
+ .. versionadded:: 1.1.7
+
"""
def __init__(self, arguments):
@@ -233,6 +242,10 @@ class MemcacheArgs(GenericMemcachedBackend):
self.set_arguments["min_compress_len"] = arguments[
"min_compress_len"
]
+ if "dead_retry" in arguments:
+ self.set_arguments["dead_retry"] = arguments["dead_retry"]
+ if "socket_timeout" in arguments:
+ self.set_arguments["socket_timeout"] = arguments["socket_timeout"]
super(MemcacheArgs, self).__init__(arguments)
diff --git a/tests/cache/test_memcached_backend.py b/tests/cache/test_memcached_backend.py
index 3338bd8..1d98819 100644
--- a/tests/cache/test_memcached_backend.py
+++ b/tests/cache/test_memcached_backend.py
@@ -476,6 +476,26 @@ class MemcachedArgstest(TestCase):
backend.set("foo", "bar")
eq_(backend._clients.memcached.canary, [{"min_compress_len": 20}])
+ def test_set_dead_retry(self):
+ config_args = {
+ "url": "127.0.0.1:11211",
+ "dead_retry": 4,
+ }
+
+ backend = MockMemcacheBackend(arguments=config_args)
+ backend.set("foo", "bar")
+ eq_(backend._clients.memcached.canary, [{"dead_retry": 4}])
+
+ def test_set_socket_timeout(self):
+ config_args = {
+ "url": "127.0.0.1:11211",
+ "socket_timeout": 4,
+ }
+
+ backend = MockMemcacheBackend(arguments=config_args)
+ backend.set("foo", "bar")
+ eq_(backend._clients.memcached.canary, [{"socket_timeout": 4}])
+
class LocalThreadTest(TestCase):
def setUp(self):