mirror of https://github.com/peter4431/rq.git
Merge branch 'master' into yaniv-aknin-worker_ttl
commit
640195d5e4
@ -0,0 +1,44 @@
|
||||
from redis import Redis, StrictRedis
|
||||
from functools import partial
|
||||
|
||||
|
||||
def fix_return_type(func):
|
||||
# deliberately no functools.wraps() call here, since the function being
|
||||
# wrapped is a partial, which has no module
|
||||
def _inner(*args, **kwargs):
|
||||
value = func(*args, **kwargs)
|
||||
if value is None:
|
||||
value = -1
|
||||
return value
|
||||
return _inner
|
||||
|
||||
|
||||
def patch_connection(connection):
|
||||
if not isinstance(connection, StrictRedis):
|
||||
raise ValueError('A StrictRedis or Redis connection is required.')
|
||||
|
||||
# Don't patch already patches objects
|
||||
PATCHED_METHODS = ['_setex', '_lrem', '_zadd', '_pipeline', '_ttl']
|
||||
if all([hasattr(connection, attr) for attr in PATCHED_METHODS]):
|
||||
return connection
|
||||
|
||||
if isinstance(connection, Redis):
|
||||
connection._setex = partial(StrictRedis.setex, connection)
|
||||
connection._lrem = partial(StrictRedis.lrem, connection)
|
||||
connection._zadd = partial(StrictRedis.zadd, connection)
|
||||
connection._pipeline = partial(StrictRedis.pipeline, connection)
|
||||
connection._ttl = fix_return_type(partial(StrictRedis.ttl, connection))
|
||||
if hasattr(connection, 'pttl'):
|
||||
connection._pttl = fix_return_type(partial(StrictRedis.pttl, connection))
|
||||
elif isinstance(connection, StrictRedis):
|
||||
connection._setex = connection.setex
|
||||
connection._lrem = connection.lrem
|
||||
connection._zadd = connection.zadd
|
||||
connection._pipeline = connection.pipeline
|
||||
connection._ttl = connection.ttl
|
||||
if hasattr(connection, 'pttl'):
|
||||
connection._pttl = connection.pttl
|
||||
else:
|
||||
raise ValueError('Unanticipated connection type: {}. Please report this.'.format(type(connection)))
|
||||
|
||||
return connection
|
@ -1 +1 @@
|
||||
VERSION = '0.3.5-dev'
|
||||
VERSION = '0.3.6-dev'
|
||||
|
Loading…
Reference in New Issue