社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

使用django频道发送相机图像,但在最后几次之后总是关闭

season • 2 年前 • 223 次点击  

这是我的消费者,我想使用django频道发送相机图像,但总是在最后几次之后关闭,不知道为什么

你能告诉我它是否设置不正确吗?我使用Redis作为通道层

import json
from channels.generic.websocket import AsyncWebsocketConsumer


class ObjectDetectionConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['v_name']
        self.room_group_name = 'ObjectDetection_%s' % self.room_name
        print(self.room_name)
        # Join room group
        await self.channel_layer.group_add(
            self.room_group_name,
            self.channel_name
        )
        await self.accept()

    async def disconnect(self, close_code):
        # Leave room group
        await self.channel_layer.group_discard(
            self.room_group_name,
            self.channel_name
        )

    # Receive message from WebSocket
    async def receive(self, text_data):
        print("receive! ")
        # Send message to room group
        await self.channel_layer.group_send(
            self.room_group_name,
            {
                'type': 'video_message',
                'message': text_data,
            }
        )

    # Receive message from room group
    async def video_message(self, event):
        # print(1)
        message = event['message']

        # Send message to WebSocket
        await self.send(text_data=json.dumps({
            'message': message
        }))

这是错误的信息

Exception inside application: Attempt to send on a closed protocol
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\django\contrib\staticfiles\handlers.py", line 101, in __call__
    return await self.application(scope, receive, send)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\routing.py", line 62, in __call__
    return await application(scope, receive, send)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\sessions.py", line 47, in __call__
    return await self.inner(dict(scope, cookies=cookies), receive, send)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\sessions.py", line 263, in __call__
    return await self.inner(wrapper.scope, receive, wrapper.send)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\auth.py", line 185, in __call__
    return await super().__call__(scope, receive, send)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\middleware.py", line 24, in __call__
    return await self.inner(scope, receive, send)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\routing.py", line 116, in __call__
    return await application(
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\consumer.py", line 94, in app
    return await consumer(scope, receive, send)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\consumer.py", line 58, in __call__
    await await_many_dispatch(
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\utils.py", line 50, in await_many_dispatch
    await dispatch(result)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\consumer.py", line 73, in dispatch
    await handler(message)
  File "D:\code\python\django-object-detection\mysite\ObjectDetection\consumers.py", line 42, in video_message
    await self.send(text_data=json.dumps({
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\generic\websocket.py", line 209, in send
    await super().send({"type": "websocket.send", "text": text_data})
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\consumer.py", line 81, in send
    await self.base_send(message)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\channels\sessions.py", line 226, in send
    return await self.real_send(message)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\daphne\server.py", line 240, in handle_reply
    protocol.handle_reply(message)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\daphne\ws_protocol.py", line 202, in handle_reply
    self.serverSend(message["text"], False)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\daphne\ws_protocol.py", line 256, in serverSend
    self.sendMessage(content.encode("utf8"), binary)
  File "C:\ProgramData\Anaconda3\envs\torch113\lib\site-packages\autobahn\websocket\protocol.py", line 2275, in sendMessage
    raise Disconnected("Attempt to send on a closed protocol")
autobahn.exception.Disconnected: Attempt to send on a closed protocol
WebSocket DISCONNECT /ws/ObjectDetection/wms/ [127.0.0.1:64265]

大约一分钟后,它将自动断开连接。你需要断开连接再重新连接吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/158754