首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django通道无法实时输出日志

django通道无法实时输出日志
EN

Stack Overflow用户
提问于 2017-09-23 23:35:32
回答 1查看 877关注 0票数 0

我的代码:

代码语言:javascript
复制
def ws_receive(message):
    text = message.content['text']
    request = json.loads(text)
    cmd = request['cmd']      

    results = run(cmd)
    print(cmd)
    for result in results:
         Group(GROUP_NAME).send({'text':result.decode('utf-8')})
         print(result)

cmd类似于ping -c 4 www.google.com

最终结果是:

代码语言:javascript
复制
[2017/09/24 07:24:44] WebSocket HANDSHAKING / [127.0.0.1:59285]
[2017/09/24 07:24:44] WebSocket CONNECT / [127.0.0.1:59285]
[2017/09/24 07:24:44] HTTP GET /api/hosts/?status=used 200 [0.07, 127.0.0.1:59247]
ping -c 4 www.google.com
2017-09-24 07:24:58.512885 b'PING www.google.com (74.125.23.103): 56 data bytes\n'
2017-09-24 07:24:58.513127 b'64 bytes from 74.125.23.103: icmp_seq=0 ttl=45 time=138.542 ms\n'
2017-09-24 07:24:59.517881 b'64 bytes from 74.125.23.103: icmp_seq=1 ttl=45 time=142.954 ms\n'
2017-09-24 07:25:00.522698 b'64 bytes from 74.125.23.103: icmp_seq=2 ttl=45 time=144.568 ms\n'
2017-09-24 07:25:01.562285 b'64 bytes from 74.125.23.103: icmp_seq=3 ttl=45 time=180.163 ms\n'
2017-09-24 07:25:01.562400 b'\n'
2017-09-24 07:25:01.562459 b'--- www.google.com ping statistics ---\n'
2017-09-24 07:25:01.562517 b'4 packets transmitted, 4 packets received, 0.0% packet loss\n'
2017-09-24 07:25:01.562586 b'round-trip min/avg/max/stddev = 138.542/151.557/180.163/16.662 ms\n'

但是,浏览器的websocket调试信息是:

因此,我确信通道在发送消息之前执行命令,但我希望实时发送消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-06 12:20:28

试着立即发送:

代码语言:javascript
复制
Group(GROUP_NAME).send({'text':result.decode('utf-8')}, immediately=True)

这背后的原因是你在websocket消费者函数中。当您在其中时,Group.send调用不会执行,而是只在您离开函数后批量收集和执行。使用immediately=True将覆盖此行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46385223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档