Skip to content

Commit 11255a5

Browse files
authored
add client_class option (#3)
1 parent a0bf138 commit 11255a5

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ authors = [
1414
]
1515
dependencies = [
1616
"Flask",
17-
"pymemcache>=1.3.4",
17+
"pymemcache>=3.4.4",
1818
]
1919
dev-dependencies = [
2020
"pytest",

src/flask_pymemcache.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,25 @@
5151
::
5252
5353
memcache.client.set('foo', 'bar')
54-
5554
"""
5655

56+
from __future__ import annotations
57+
5758
import flask
58-
import pymemcache.client
59-
import pymemcache.client.hash
59+
import pymemcache
6060

6161

6262
class FlaskPyMemcache:
63-
def __init__(self, app=None, conf_key=None):
63+
def __init__(self, app=None, conf_key=None, client_class=None) -> None:
6464
"""
6565
:type app: flask.Flask
6666
:parm str conf_key: Key of flask config.
6767
"""
6868
self.conf_key = conf_key
6969
if app is not None:
70-
self.init_app(app, conf_key)
70+
self.init_app(app, conf_key, client_class)
7171

72-
def init_app(self, app, conf_key=None):
72+
def init_app(self, app, conf_key=None, client_class=None) -> None:
7373
"""
7474
:type app: flask.Flask
7575
:parm str conf_key: Key of flask config.
@@ -84,9 +84,9 @@ def init_app(self, app, conf_key=None):
8484

8585
if isinstance(conf["server"], list):
8686
conf["servers"] = conf.pop("server")
87-
client = pymemcache.client.hash.HashClient(**conf)
87+
client = (client_class or pymemcache.HashClient)(**conf)
8888
elif isinstance(conf["server"], tuple):
89-
client = pymemcache.client.Client(**conf)
89+
client = (client_class or pymemcache.Client)(**conf)
9090
else:
9191
raise TypeError(
9292
"Flask-PyMemcache conf['server'] should be tuple or list of tuples"
@@ -102,8 +102,5 @@ def close_connection(exc=None):
102102
client.close()
103103

104104
@property
105-
def client(self):
106-
"""
107-
:rtype: pymemcache.client.Client
108-
"""
105+
def client(self) -> pymemcache.Client:
109106
return flask.current_app.extensions["pymemcache"][self]

tests/test_flask_pymemcache.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,17 @@ def test_simple(self):
2424
assert memcache.client.get(b"foo") == b"bar"
2525

2626
assert pymc.get(b"pxfoo") == b"bar"
27+
28+
def test_pool(self):
29+
memcache = flask_pymemcache.FlaskPyMemcache()
30+
app = flask.Flask(__name__)
31+
app.config["PYMEMCACHE"] = {
32+
"server": ("localhost", 11211),
33+
"key_prefix": b"px",
34+
"close_on_teardown": False,
35+
}
36+
memcache.init_app(app, client_class=pymemcache.PooledClient)
37+
38+
with app.app_context():
39+
assert memcache.client.get(b"foo") is None
40+
assert isinstance(memcache.client, pymemcache.PooledClient)

0 commit comments

Comments
 (0)