首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当断开或刷新Django通道时,websocket“花了很长时间才关闭并被杀死”

当断开或刷新Django通道时,websocket“花了很长时间才关闭并被杀死”
EN

Stack Overflow用户
提问于 2022-08-22 00:51:52
回答 1查看 332关注 0票数 0

我使用Django通道实时发送和保存数据,但是当我刷新页面时,出现了错误。我不知道为什么,但是,在第一次加载时,系统是可以的,但是如果我重新加载页面,日志就会出现。

日志

代码语言:javascript
复制
Application instance <Task pending name='Task-2' coro=<StaticFilesWrapper.__call__() running at path\channels\staticfiles.py:44> wait_for=<Future pending cb=[Task.task_wakeup()]>> for connection <WebSocketProtocol client=['127.0.0.1', 50991] path=b'/ws/graph/'> took too long to shut down and was killed.

consumer.py

代码语言:javascript
复制
    async def connect(self):
          event= eventhubreader.EventReader()
          async def cb(partition, events):
            data = events[len(events)-1]
            mock = event.generateMockData(data.body_as_json())
            await self.send(json.dumps(mock))
          
        await self.accept()
        while True:
            await event.startReadMessage("HostName","name",cb)

evenhubreader.py

代码语言:javascript
复制
 def generateMockData(self,event):
        data = {}
        now = datetime.now()
        data["temperature"]  = random.randint(23,25)
        data["tss"]  = random.randint(5,8)
        data["vss"]  = random.randint(1,4)
        data["bod"]  = random.randint(1,7)
        data["doc"]  = random.randint(8,13)
        data["cod"]  = random.randint(5,12)
        data["ph"]  = random.randint(2,13)
        data["turbidity"]  = random.randint(1,5)
        data["conductivity"]  = random.randint(1,7)
        data['datetime'] = now.strftime("%d/%m/%Y %H:%M:%S")
        return data

requirements.txt

代码语言:javascript
复制
arrow==1.2.2
asgiref==3.5.2
azure-core==1.24.2
azure-eventhub==5.10.0
azure-iot-device==2.11.0
azure-iot-hub==2.6.0
channels==3.0.5
cryptography==37.0.4
daphne==3.0.2
Django==4.1
django-crispy-forms==1.14.0
pandas==1.4.3
pendulum==2.1.2
pipreqs==0.4.11
plotly==5.9.0
psycopg2==2.9.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.21
pydantic==1.9.1
PyJWT==2.4.0
pyOpenSSL==22.0.0
pyparsing==3.0.9
PyPika==0.48.9
PySocks==1.7.1
python-dateutil==2.8.2
python-dotenv==0.20.0
python-engineio==4.3.3
python-slugify==6.1.2
python-socketio==5.7.1
websockets==10.3
EN

回答 1

Stack Overflow用户

发布于 2022-08-29 04:57:04

这只是我的猜测,我认为时间没有终止,所以当它断开时尝试终止时间。

代码语言:javascript
复制
async def connect(self):
    await self.accept()
    self.event_close = False
    while not self.event_close:
        await event.startReadMessage("HostName","name",cb)

async def disconnect(self, close_code):
    self.event_close = True
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73439269

复制
相关文章

相似问题

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