Skip to content

channels_redis hard-requires EVAL command which fails on Pivotal's Shared Redis Release #290

Open
@vanschelven

Description

@vanschelven

channels_redis uses .eval() in a number of locations.

On certain redis server installations EVAL has been renamed for security reasons.

Pivotal's Shared Redis Release is an example of a pre-packaged redis that has EVAL renamed by default.

Under those circumstances, this happens:

Traceback (most recent call last):
result = task.result()
File "python/lib/python3.9/site-packages/channels_redis/core.py", line 492, in receive
message_channel, message = await self.receive_single(
File "python/lib/python3.9/site-packages/channels_redis/core.py", line 547, in receive_single
content = await self._brpop_with_clean(
File "python/lib/python3.9/site-packages/channels_redis/core.py", line 383, in _brpop_with_clean
await connection.eval(cleanup_script, keys=[], args=[channel, backup_queue])
aioredis.errors.ReplyError: ERR unknown command `EVAL`, with args beginning with: ` local backed_up = redis.call('ZRANGE', ARGV[2], 0, -1, 'WITHSCORES') for i = #backed_up, 1, -2 do `,

It would be great if EVAL could be removed as a requirement.

Tangentially related: #226

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions