Skip to content

Commit a02f997

Browse files
committed
Prefix Redis key names
1 parent 4b2f0b1 commit a02f997

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ The following settings can be used to fine tune django-eb-sqs. Copy them into yo
131131
- EB_SQS_QUEUE_PREFIX (`eb-sqs-`): Prefix to use for the queues. The prefix is added to the queue name.
132132
- EB_SQS_REDIS_CLIENT (`None`): Set the Redis connection client (`StrictRedis`)
133133
- EB_SQS_REDIS_EXPIRY (`604800`): Default expiry time in seconds until a group is removed
134+
- EB_SQS_REDIS_KEY_PREFIX (`eb-sqs-`): Prefix used for all Redis keys
134135
- EB_SQS_USE_PICKLE (`False`): Enable to use `pickle` to serialize task parameters. Uses `json` as default.
135136

136137

eb_sqs/redis/redis_group_client.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,30 @@ def __init__(self, redis_client):
1313
super(RedisGroupClient, self).__init__()
1414
self._redis_client = redis_client
1515

16+
def _key_name(self, group_id):
17+
# type: (unicode) -> None
18+
return '{}{}'.format(settings.REDIS_KEY_PREFIX, group_id)
19+
1620
def add(self, worker_task):
1721
# type: (WorkerTask) -> None
22+
name = self._key_name(worker_task.group_id)
1823
pipe = self._redis_client.pipeline()
19-
pipe.sadd(worker_task.group_id, worker_task.id)\
20-
.expire(worker_task.group_id, settings.REDIS_EXPIRY)\
24+
pipe.sadd(name, worker_task.id)\
25+
.expire(name, settings.REDIS_EXPIRY)\
2126
.execute()
2227

2328
def remove(self, worker_task):
2429
# type: (WorkerTask) -> bool
2530
"""
2631
:return: True if last task in group
2732
"""
28-
if self._redis_client.srem(worker_task.group_id, worker_task.id) > 0:
29-
return self._redis_client.scard(worker_task.group_id) == 0
33+
name = self._key_name(worker_task.group_id)
34+
if self._redis_client.srem(name, worker_task.id) > 0:
35+
return self._redis_client.scard(name) == 0
36+
else:
37+
return False
3038

3139
def active_tasks(self, group_id):
3240
# type: (unicode) -> int
33-
return self._redis_client.scard(group_id)
41+
name = self._key_name(group_id)
42+
return self._redis_client.scard(name)

eb_sqs/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
REDIS_CLIENT = getattr(settings, 'EB_SQS_REDIS_CLIENT', None) # type: StrictRedis
2121
# default: 7 days
2222
REDIS_EXPIRY = getattr(settings, 'EB_SQS_REDIS_EXPIRY', 3600*24*7) # type: int
23+
REDIS_KEY_PREFIX = getattr(settings, 'EB_SQS_REDIS_KEY_PREFIX', 'eb-sqs-') # type: string
2324

2425
WORKER_FACTORY = getattr(settings, 'EB_SQS_WORKER_FACTORY', None) # type: WorkerFactory
2526

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name='django-eb-sqs',
9-
version='0.8',
9+
version='0.9',
1010
package_dir={'eb_sqs': 'eb_sqs'},
1111
include_package_data=True,
1212
packages=find_packages(),

0 commit comments

Comments
 (0)