When running multiple services against the same Redis cluster it seems to be good practice to limit each of the services' Redis user to only have access to their assigned Redis database.
In RQ_QUEUES you can specify which of Redis' 16 (0-15) databases the service should use, ie.:
Running Devilry's RQ Worker with this setup does however yield an error:
redis.exceptions.NoPermissionError: this user has no permissions to access one of the keys used as arguments
Replacing ~3__*:* with ~* (access to all 16 databases) it runs just fine.
It is unclear if this is a problem in Redis v7.0, a limitation in django-rq, a bug in Devilry 6.3.3's implementation, or a documentation mismatch/something I have misunderstood. Perhaps Devilry's RQ Worker tries to read all databases before using the specified database?
When running multiple services against the same Redis cluster it seems to be good practice to limit each of the services' Redis user to only have access to their assigned Redis database.
In
RQ_QUEUES
you can specify which of Redis' 16 (0-15) databases the service should use, ie.:And in Redis 7.0 the user can be set to only access that database:
Running Devilry's RQ Worker with this setup does however yield an error:
Replacing
~3__*:*
with~*
(access to all 16 databases) it runs just fine.It is unclear if this is a problem in Redis v7.0, a limitation in
django-rq
, a bug in Devilry 6.3.3's implementation, or a documentation mismatch/something I have misunderstood. Perhaps Devilry's RQ Worker tries to read all databases before using the specified database?