It can be huge improvement for asgi_rabbitmq layer. But I'm asking
you to keep this change in the experimental branch before I implement
it for RabbitMQ layer. More questions can came up in progress.
For me it is still unclear how to implement `channels_capacity` option
for different reply channels in this multiplexing. If all reply
channels for current process will have it's obvious.
Regards, Artem.
Hi everyone,
It can be huge improvement for asgi_rabbitmq layer. But I'm asking
you to keep this change in the experimental branch before I implement
it for RabbitMQ layer. More questions can came up in progress.
For me it is still unclear how to implement `channels_capacity` option
for different reply channels in this multiplexing. If all reply
channels for current process will have it's obvious.
Global capacity for process sounds reasonable. Probably we should state it in spec.
Regards, Artem.
Regards, Artem.
--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscribe@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/a4af7e17-5ebe-41c5-b30d-f68110d348b4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi,
I am not sure, if I understand your proposal correctly. Do you mean, the
asgi server has to listen only to one channel or do you mean it has to
listen to one channel of any channel-type?
So with redis, do I have to call
"BLPOP LOCALID TIMEOUT"
or do I have to call
"BLPOP http.response.PROCESSID! TIMEOUT" and
"BLPOP websocket.send.PROCESSID! TIMEOUT"
I think you mean the second one, but then your goal, that daphne has
only to listen "on a single channel at any time" seams not be fulfilled.
I would like a solution, were the asgi server really listens only to one
channel. I don't like the idea, that there is a fixed set of channel
names. This seems not flexible.
Another thing:
Currently the usual case looks like this:
Time | ASGI Application | ASGI Server |
----------------------------------------------
1 | | receive("foo!123") |
2 | send("foo!123") | |
First, the asgi server listens to a specific channel, for example
http.response.RANDOMPART!CLIENTID. Then the Django app sends something
to this channel and the asgi server gets it.
But what should happen when the django app sends to a channel and the
asgi server starts to listen on this channel at a later time:
Time | ASGI Application | ASGI Server |
----------------------------------------------
1 | send("foo!123") | |
2 | | receive("foo!123") |
With the current implementation the messages remains in the asgi-backend
until it expires. So the ASGI Server can fetch it later.
With your proposal this could change. The ASGI-Server will get the
message from the asgi-backend, as soon, as it was send by the
application. So if nobody has called receive() for this channel, it
either has to be dropped or saved.
Do you have a recommendation what to do with a message, that can not be
dispatched to a client socket? This should not happen so often.