Thanks Andrew this helps me as well. There is a missing piece I don't 
understand yet. In my management command, then I probably will have to use 
`async_to_sync(channel_layer.group_send)` 
to send the message to consumers (right?). The only problem is that 
whenever I use async_to_sync it creates a new connection to redis every 
single time. I now use channels_redis v2.3.1 and in this version I don't 
get excessive connections but still it opens a new connection on every 
send. I was wondering if that is intentional or not in a sync context and 
if so, how can it be solved.

Thanks again for your great work

On Wednesday, February 22, 2017 at 7:55:33 PM UTC+1, Andrew Godwin wrote:
>
> Hi Jochen,
>
> Your problem is that if you want to listen to the pubsub channel you will 
> need a dedicated process to do so, as you can't just poll something like 
> that. Given that restriction, you're going to have to write something like 
> a management command that opens a connection to Redis and listens for 
> messages, and then whenever it gets one, sends the message onto a channel 
> in the Django channel system.
>
> You can send to channels from anywhere, so it's just a basic listener with 
> one line of channel send added. You're likely to want some sort of logic on 
> these messages, I suspect, so I would send onto a single custom channel and 
> then, now your messages are in the evented channel system, you can then 
> write a consumer for that channel and tie it into the routing and handle 
> any distribution/storage there.
>
> This keeps the body of your logic inside the Django consumer code, and the 
> management command nice and simple - it just needs to send onto a custom 
> channel and not worry about what to do with that data, you can hook that up 
> later. If you have fields in the message you split out into different 
> dictionary keys, you can even use the Channels routing options on those 
> fields - so, for example, you could route everything with a certain task 
> name to one consumer, and everything else to a catch-all consumer.
>
> Andrew
>
> On Wed, Feb 22, 2017 at 6:55 AM, Jochen Breuer <[email protected] 
> <javascript:>> wrote:
>
>> Hi!
>>
>> I'm not entirely sure where to start and I hope you can help me. I'm 
>> using SaltStack to execute tasks on minions. The results of those jobs 
>> (that's the term used in Salt) are then published to a job cache. In this 
>> case its a Redis server (Redis Pubsub). Now I would like to subscribe to a 
>> specific Redis channel, where the job results are published, with my Django 
>> (Channels) application. Every time a job result is pushed, I'd also like to 
>> push a message to a channel in Django.
>>
>> Where to begin? Do I need to write a new protocol server or just a custom 
>> channel? Even after reading the docs I'm still lacking overview. Perhaps 
>> someone can push me into the right direction. Thanks!
>>
>> Jochen
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/c933a5b5-7b72-4d7d-985a-a311c0f16b26%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/c933a5b5-7b72-4d7d-985a-a311c0f16b26%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/800a3278-ba4b-402d-b8ee-341b999879ba%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to