Skip to content

Allow sending messages in bulk #399

@olzhasar

Description

@olzhasar

Feature request

Sometimes there is a need to send multiple messages to a channel (or group) at once. While this can be done using a group of asyncio tasks, the underlying logic will be suboptimal, cause there would be multiple redis calls for discarding old messages, checking the capacity, appending to the set and setting the expiration.

It would be cool if there were optimized functions for that using a single zadd call.
Something like this:

    async def send_multiple(self, channel, messages: list):
        ...

    async def group_send_multiple(self, channel, messages: list):
        ...

I am not sure if such an issue should be created in the channels repo first, let me know if that's the case.

Activity

carltongibson

carltongibson commented on Sep 15, 2024

@carltongibson
Member

This isn't a bad idea. We'd probably need to add something to the base channel layer, and docs too.

Do you want to experiment with an implementation?

olzhasar

olzhasar commented on Sep 15, 2024

@olzhasar
Author

Sure, I will prepare a PR for this once I have some free time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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

        Participants

        @carltongibson@olzhasar

        Issue actions

          Allow sending messages in bulk · Issue #399 · django/channels_redis