Jor*_*cht 3 django django-channels
我们的想法是在worker.connectworker 上运行后台任务.执行任务时,我希望通过通知组将其进度发送到已连接的客户端.
问题:发送到通知组的消息会延迟,直到工作人员上的任务完成.因此:在延迟5秒(sleep(5))之后,客户端上同时出现"开始"和"停止"消息.我希望消息"开始",然后是5秒延迟,然后是"停止"消息.知道为什么不是这样吗?
我运行了以下三个进程:
daphne tests.asgi:channel_layerpython manage.py runworker --exclude-channel=worker.connectpython manage.py runworker --only-channel=worker.connect在views.py:
def run(request, pk):
Channel('worker.connect').send({'pk': pk})
return HttpResponse(status=200)
Run Code Online (Sandbox Code Playgroud)
在consumers.py:
def ws_connect(message):
Group('notifications').add(message.reply_channel)
message.reply_channel.send({"accept": True})
def worker_connect(message):
run_channel(message)
Run Code Online (Sandbox Code Playgroud)
在views.py:
def run_channel(message):
Group('notifications').send({'text': 'Start'})
sleep(5)
Group('notifications').send({'text': 'Stop'})
Run Code Online (Sandbox Code Playgroud)
routing.py
channel_routing = {
'websocket.connect': consumers.ws_connect,
'worker.connect': consumers.worker_connect,
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以immediately=True将该参数添加为该send函数.根据消息来源:
发送延迟到消费者完成.要覆盖它,您可以立即传递= True.
https://github.com/django/channels/blob/master/channels/channel.py#L32
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |