[ZODB-Dev] zeo.memcache
Vincent Pelletier
plr.vincent at gmail.com
Thu Oct 6 18:57:41 UTC 2011
Le jeudi 06 octobre 2011 21:18:39, Andreas Gabriel a écrit :
> Maybe this code will help as example for the shared locking problem
>
> https://svn.plone.org/svn/collective/unimr.memcachedlock/trunk/unimr/memcac
> hedlock/memcachedlock.py
I couldn't resist writing my own version inspired from your code:
https://github.com/vpelletier/python-memcachelock
It lacks any integration with ZODB.
It drops support for non-"cas" memcached. I understand your code relies on
ZODB conflicts as last resort, but I wanted to scratch an itch :) .
It drops support for timeout (not sure why they are used for, so it's actually
more a "left asides" than a drop).
It moves the "uid" problem from random generator to a hope that no instance
will survive 2**32 instanciation of other instances for a single lock. I feel
somewhat safer that way.
It does a super-minor optimisation: the key won't change in instance life, so
hash it once and use the 2-tuple form for memcache's key parameter.
I admit this is my first real attempt at using "cas", and the documentation
mentions gets must be called before calling cas for it to succeed. I don't see
gets calls in your code, so I wonder if there wouldn't be a bug... Or maybe
it's just my misunderstanding.
As the README states: it's not well tested. I only did stupid sanity checks (2
instances in a single python interactive interpreter, one guy on the keyboard
- and a slow one, because it's late) and a pylint run.
Regards,
/me falls asleep on keyboard
--
Vincent Pelletier
More information about the ZODB-Dev
mailing list