Python 如何使用django通道实时传输脚本输出?

Python 如何使用django通道实时传输脚本输出?,python,django,celery,channels,Python,Django,Celery,Channels,我正在使用django运行python脚本。理想情况下,我希望将shell输出重定向到一个网页,我正在使用django频道来实现这一目标 我试图调用一个视图,该视图异步运行脚本(使用芹菜),然后返回对html页面的HttpResponse。在这个html页面上,javascript代码打开一个websocket并等待来自脚本任务的消息 目前,脚本在后台正常运行,websocket连接已建立。不过,我在网页上看不到输出 views.py: def主视图(请求): res=script_task.d

我正在使用django运行python脚本。理想情况下,我希望将shell输出重定向到一个网页,我正在使用django频道来实现这一目标

我试图调用一个视图,该视图异步运行脚本(使用芹菜),然后返回对html页面的HttpResponse。在这个html页面上,javascript代码打开一个websocket并等待来自脚本任务的消息

目前,脚本在后台正常运行,websocket连接已建立。不过,我在网页上看不到输出

views.py:

def主视图(请求):
res=script_task.delay()
client=redis.redis(host=“localhost”,port=6379,db=0)
返回渲染(请求“run_channels.html”)
tasks.py:

@共享任务
def macch_main_chan():
层=获取通道层()
异步到同步(layer.send)('out',{'message':'test'})
打印('Done!')
返回HttpResponse()
routing.py:

来自。进口消费者
从django.url导入路径
websocket\u urlpatterns=[
路径('ws/outputmach/',consumers.PushNotification,name='out'),
]
consumers.py:

类推送通知(WebsocketConsumer):
http_user=True
def连接(自,**kwargs):
self.accept()
def接收(自身、文本、**kwargs):
异步到同步(self.channel\u layer.send)(
“出去”,
{
“文本”:文本,
},
)
def断开连接(自身,信息,**kwargs):
通过
运行_channels.html:


跑
var chatSocket=新的WebSocket(
'ws://'+window.location.host+
“/ws/outputmach/”);
chatSocket.onmessage=函数(e){
控制台日志(e)
var data=JSON.parse(e.data);
var消息=数据['message'];
document.querySelector(“#log”).value+=(message+'\n');
};
chatSocket.onclose=函数(e){
console.error('聊天套接字意外关闭');
};
目前这是我得到的错误:

kombu.exceptions.EncodeError:HttpResponse类型的对象不可JSON序列化
这是否与通道层不可序列化且不能在芹菜任务中使用有关

在任何情况下,是否有人对如何在html网页上实现实时脚本登录(最好使用此工具)提出建议