And if I would like to separate some of the infrastructure - for example dedicate some resources just for one customer. Can I run some workers for the request based on the, for example, path?
Example: I want 10 workers consume just messages from path example.com/customer1 and all messages from example.com/customer1 will be consumed by those 10 workers. I guess I can separate the interfaces servers - I will filter it on the Nginx server. Can I also run (in the distance future with millions of requests :) ) separate Redis server for the 1 customer? Can I dedicate some workers and interface servers to just talk to specific Redis server? On Thursday, January 26, 2017 at 11:10:24 PM UTC+1, Andrew Godwin wrote: > > Hi, > > Yes, you can run daphne with just an ASGI file that matches the Django > settings. It's easier to just use the Django project for this, but you also > don't need to update/restart it unless the CHANNEL_LAYERS setting changes. > > The conditions you put down are mostly correct, apart from 2), having one > redis instance. You can supply the Redis channel layer with multiple Redis > hostnames and it will automatically shard between them - however, if you do > this you must have enough workers to consume from all of the shards or you > may miss messages. I recommend sticking with one for now, as a single Redis > can handle a LOT of throughput. You also can't use redis-cluster, as it > doesn't support some of the operations we use (like BLPOP) > > Andrew > > On Thu, Jan 26, 2017 at 1:27 PM, Sgiath <[email protected] <javascript:>> > wrote: > >> Hi I am working on some app with Django Channels and I am in the phase >> when I am looking for the best way how to deploy the Channel project (with >> scaling and smooth update in mind). >> I have this setup: >> >> 1. Nginx server handling SSL certificate, headers, etc. it will proxy >> to -> >> 2. Daphne server - question: *I can run Daphne with just two files >> - asgi.py and settings.py (which will match the Django app settings)?* >> 3. Redis Channel backend server >> 4. Redis Cache server >> 5. MySQL database >> 6. Server with actual Django code running the workers (few for http.* >> few for websocket.* channels and few universal). >> >> If I would like to scale I can: >> >> - Run multiple Daphne servers and load-balance them on the Nginx >> server >> - Run multiple Redis Channel servers in one shard >> - Run multiple servers with workers >> >> If I would like to update to the new Django code: >> >> - Just load new code on the worker servers and restart the workers >> (in case I wouldn't change the CHANNEL_LAYERS settings). >> >> Will it work? Are there the only three conditions? 1. All Daphne servers >> has to see the Redis, and all workers has to see the Redis too. 2. The >> Redis has to looks like one instance. 3. Daphne and workers has to have the >> same CHANNEL_LAYERS settings. >> >> Right now I am in the proof of concept phase and I all test it with the >> docker-compose (every part in my architecture is separate Docker image) >> and it is working (only difference is that I am running Daphne and workers >> on the same machine but I am in the middle of separate them) but I want to >> be sure that it will work on actual separate servers (I want to use Google >> Cloud platform) before I will present this idea to my boss :) . >> >> Thanks for your help >> *Sgiath* >> >> -- >> 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/c1eac5c2-b359-4e67-96a8-86fba12f9a07%40googlegroups.com >> >> <https://groups.google.com/d/msgid/django-users/c1eac5c2-b359-4e67-96a8-86fba12f9a07%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/d6376196-ce62-4bf1-8094-4032b525fdb3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

