diff options
author | Hervé Beraud <hberaud@redhat.com> | 2022-06-16 10:56:44 -0400 |
---|---|---|
committer | sqla-tester <sqla-tester@sqlalchemy.org> | 2022-06-16 10:56:44 -0400 |
commit | 1de93aab14c1274f20c1f44f8adff3b143c864f6 (patch) | |
tree | d1ce3714070baae70e6bbe26acba939da10a7c77 | |
parent | 06faf1820fbb1b39c122253376a82acb6e89d4b1 (diff) | |
download | dogpile-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.rst | 8 | ||||
-rw-r--r-- | dogpile/cache/backends/memcached.py | 13 | ||||
-rw-r--r-- | tests/cache/test_memcached_backend.py | 20 |
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): |