#15815: Support memcached binary protocol in PyLibMCCache
-------------------------------------+-------------------------------------
Reporter: mtigas | Owner: nobody
Type: New | Status: new
feature | Component: Core (Cache system)
Milestone: | Severity: Normal
Version: 1.3 | Keywords:
Resolution: | Has patch: 1
Triage Stage: Accepted | Needs tests: 1
Needs documentation: 1 | Easy pickings: 0
Patch needs improvement: 1 |
-------------------------------------+-------------------------------------
Comment (by mtigas):
I’ll agree with that, though I wasn’t sure how to make this semantically
better.
For the older cache framework, django-newcache accepted `binary` as a
cache param (with `timeout`, `cull_frequency`, et. al.), with
`CACHE_BEHAVIORS` as a separate settings option. (Using django-newcache as
a comparison point since some of the newer 1.3+ cache features like
versioning and key prefixing appear to have been based on the `newcache`
implementation.)
But I didn’t quite feel that special casing `PyLibMCCache` to accept a new
base parameter was correct, either …
{{{
CACHES = {
'default' : {
"BACKEND" : 'django.core.cache.backends.memcached.PyLibMCCache',
"LOCATION" : '127.0.0.1:11211',
"BINARY" : True,
"OPTIONS" : dict(tcp_nodelay=True, ketama=True),
}
}
}}}
… since the description of `OPTIONS` reads, “Any options that should be
passed to cache backend. The list options understood by each backend vary
with each backend. […] Cache backends backed by a third-party library will
pass their options directly to the underlying cache library.”
In particular, that seems to imply that for consistency’s sake, all
implementation-specific options regarding a backend should go into
`OPTIONS` and that it’s up to the backend to do what it needs to provide
the correct information to the underlying library.
Technically, a more semantically-correct option would be to do something
like:
{{{
CACHES = {
'default' : {
"BACKEND" : 'django.core.cache.backends.memcached.PyLibMCCache',
"LOCATION" : '127.0.0.1:11211',
"OPTIONS" : {
"binary": True,
"behaviors" : dict(tcp_nodelay=True, ketama=True),
}
}
}
}}}
Not really sure what the best patch would be at this point.
--
Ticket URL: <http://code.djangoproject.com/ticket/15815#comment:3>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.