Dear Andrew,

thank you for advice. Now I am starting implementing ASGI worked based on 
one included in Channels. I would like to take a look at example of how to 
create and use single-reader channels properly, so I took Channels, 
asgi_redis and Daphne code base and did not found any place where such 
channels are created. In particular, I hoped to find the place where Daphne 
creates `http.request.body_channel` to handle large HTTP requests. To my 
surprise I did not found any `body_channel` mentions in the Daphne code 
except a single test, which simply checks the message for `body_channel` 
optional field. Do I miss something, or Daphne simply does not implement 
this concept and therefor cannot handle large requests sequentially by 
chunking them?

воскресенье, 19 марта 2017 г., 21:18:07 UTC+3 пользователь Andrew Godwin 
написал:
>
> Workers can't dynamically change their channels during runtime, but you 
> can tell workers to only run specific channels in one of two ways:
>
>  - Have different routing configurations and different settings files that 
> point to each for the two worker groups
>  - Use the --only-channels and --exclude-channels arguments to runworker 
> to restrict which channels it will process.
>
> You can still only do this once at the start of the application, though. 
> There's no way to dynamically vary what a worker wants at runtime because 
> of how the Channels framework is written and integrated into Django; you'd 
> have to do your own ASGI worker class from scratch if you wanted that.
>
> Andrew
>
> On Sun, Mar 19, 2017 at 5:57 AM, Alexander Prokhorov <[email protected] 
> <javascript:>> wrote:
>
>> Dear Colleagues,
>>
>> I am playing with Channels for some time already.
>>
>> Now, I am trying to establish "sticky" channel to one of available 
>> workers. I thought I can create single-reader channel from consumer and 
>> somehow fix the routing to make this particular worker handle this 
>> single-reader channel. I can use
>>
>> channels.channel_layers[channels.DEFAULT_CHANNEL_LAYER].new_channel(
>> "my_exclusive_channel?")
>>
>> in consumer core to create single-reader channel, but I cannot understand 
>> how to setup routing properly in such case. I tried to implement router 
>> object from scratch, but as I see its method `channel_names` invoked only 
>> one time per worker. In other words, the problems reduces to the question 
>> if it is possible to attach some consumer to dynamically created 
>> single-reader channel.
>>
>>
>> -- 
>> 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/be4c787f-1abc-4ece-8b74-ad13ce7180eb%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/be4c787f-1abc-4ece-8b74-ad13ce7180eb%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/f570799c-a6d7-4a15-bdb2-68b08cbe7c66%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to