Hi - I'm working with Django Channels (1.1.3) on a Django project and I
have some questions about how to send multiple messages from the same
consumer.
The idea is the consumer will receive a request to do some work, and will
send incremental results back to user. I've attached a simplified example
below with some questions. I'm hoping someone can steer me in the right
direction.
Django Channels:
>
> def do_some_work(message):
> for i in range(3):
> time.sleep(2)
> message.reply_channel.send({"text": 'Finished work ' + str(i)})
>
> def ws_connect(message):
> message.reply_channel.send({"accept": True})
>
> channel_routing = [
> route('websocket.connect', ws_connect),
> route('websocket.receive', do_some_work, path=r'/todo')
> ]
Javascript (borrowed mostly from the docs):
socket = new WebSocket("ws://" + window.location.host + "/todo/");
> socket.onmessage = function(e) {
> console.log(e.data);
> }
> socket.onopen = function() {
> socket.send("hello world");
> }
> // Call onopen directly if socket is already open
> if (socket.readyState == WebSocket.OPEN) socket.onopen();
Expected results: Every two seconds the browser would receive a reply from
the consumer saying 'Finished work x'.
What I observe is a delay for ~6 seconds and then all results returned at
the same time. Are the response on the reply channel blocked somehow? Is
there I way I can yield, or release the message before doing the next
increment of work?
I've also tried setting up a new consumer that *only* replies via a Group.
So instead of *message.reply_channel.send, *I would
*Channel('reply-channel').send({results:
...})* and have a new consumer defined on channel_routing for the
*'reply-channel'*. But the results are the same - all the 'work' is
completed before the browser receives a response.
Any hints on how to send multiple message in the same consumer?
Thanks in advance.
--
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/4bf7d2ce-9a13-4f85-9933-cb8496e1f59d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.