[django-channels] Running multiple daphne servers

174 views
Skip to first unread message

Tomáš Ehrlich

unread,
Feb 19, 2018, 11:34:36 AM2/19/18
to Django users
Hello everyone,
I'm running two instances of Daphne on my server (one per environment, production/staging). 
I'm using UNIX sockets behind nginx, but production requests are sent to staging and vice versa.

Workers and Daphne are using the same settings per environment (I'm using Redis as a channel
layer and each environment uses it's own DB), but how Daphne actually knows which workers
belongs to her?


Thank you in advance


Cheers,
   Tom

Andrew Godwin

unread,
Feb 19, 2018, 1:12:11 PM2/19/18
to django...@googlegroups.com
Presuming you are using Channels/Daphne 1, then the channel layer configuration is what determines what handles the requests.

If you're seeing environments answer each other's requests, check they really are using different Redis databases, and consider changing the prefix setting on the channel layer instead.

Andrew

--
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
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/66fabb88-4350-4275-8d4e-25f30e4e3b00%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Tomáš Ehrlich

unread,
Feb 19, 2018, 3:04:35 PM2/19/18
to django...@googlegroups.com
You’re absolutely right, using different prefix solves the problem. asgi_redis seems to be ignoring 
my connection_kwargs where I set the db.

Connection_kwargs should be set like this, right?

REDIS = {
    "hosts": [(os.environ.get('REDIS_HOST'), 6379)],
    "connection_kwargs": {
        "db": os.environ.get('REDIS_DB'),
    }
}

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "asgi_redis.RedisChannelLayer",
        "ROUTING": "birdview_api.channels.routing.channel_routing",
        "CONFIG": REDIS,
    },
}

I double checked the env vars and also source code of asgi_redis, but still no luck.

Anyway, this question was already aswered. Different isntances need to have different prefix or db.


Thank you Andrew! going to update to channels 2.x soon

Cheers,
   Tom

19. 2. 2018 v 19:10, Andrew Godwin <and...@aeracode.org>:

You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/wfxiPfqUPnk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users...@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
signature.asc

Tomáš Ehrlich

unread,
Feb 19, 2018, 4:08:56 PM2/19/18
to django...@googlegroups.com
Ah, problem solved.

This line forces db=0 in asgi_redis 1.x:

in 2.x version it seems to be fixed.

Thanks again! :)

19. 2. 2018 v 21:02, Tomáš Ehrlich <tomas....@gmail.com>:
signature.asc
Reply all
Reply to author
Forward
0 new messages