燃烧的小牛 2022-11-03 20:33 采纳率: 0%
浏览 295
已结题

aiowebsocket 报错 asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of 2 expected bytes

用python模拟websocket请求,报错

    async def refund_run_data(self,pnr,uri='wss://endpoint-v4-chatbot.vueling.com/socket.io/?EIO=3&transport=websocket',proxies_type=None):
        """
        
        """
        sessionId = str(uuid.uuid1())
        async with AioWebSocket(uri) as aws:
            converse = aws.manipulator  # 初始化 aiowebsocket 库的连接类
            mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","channel":"webchat-client","data":{"culture":"en-GB","helpCenterFlow":"RefundAirportTaxes","type":null,"subType":null,"clientTarget":null},"passthroughIP":null,"reloadFlow":false,"resetContext":false,"resetFlow":false,"resetState":false,"sessionId":"session-' + sessionId + '","source":"device","text":"GET_STARTED","userId":"27bca16b-15f4-4827-96b4-ec27e559aee7"}]')
            self.logger.info(f"发送了消息: {mes}")
            # 会话开始
            for i in range(13):
                await converse.receive()

            await converse.send('2')
            mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","channel":"webchat-client","data":{"culture":"en-GB","helpCenterFlow":"RefundAirportTaxes","type":null,"subType":null,"clientTarget":null},"passthroughIP":null,"reloadFlow":false,"resetContext":false,"resetFlow":false,"resetState":false,"sessionId":"session-' + sessionId + '","source":"device","text":"email","userId":"27bca16b-15f4-4827-96b4-ec27e559aee7"}]')
            self.logger.info(f"发送了消息: {mes}")
            #
            for i in range(6):
                await converse.receive()

            await converse.send('2')
            mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","channel":"webchat-client","data":{"culture":"en-GB","helpCenterFlow":"RefundAirportTaxes","type":null,"subType":null,"clientTarget":null},"passthroughIP":null,"reloadFlow":false,"resetContext":false,"resetFlow":false,"resetState":false,"sessionId":"session-' + sessionId + '","source":"device","text":"' + str(pnr) + '",''"userId":"27bca16b-15f4-4827-96b4-ec27e559aee7"}]')
            self.logger.info(f"发送了消息: {mes}")
            # 
            for i in range(6):
                mes = await converse.receive()
                print(mes)
            await converse.send('2')
            mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","channel":"webchat-client","data":{"culture":"en-GB","helpCenterFlow":"RefundAirportTaxes","type":null,"subType":null,"clientTarget":null},"passthroughIP":null,"reloadFlow":false,"resetContext":false,"resetFlow":false,"resetState":false,"sessionId":"session-' + sessionId + '","source":"device","text":"nevergiveup17apr05@qq.com","userId":"27bca16b-15f4-4827-96b4-ec27e559aee7"}]')
            self.logger.info(f"发送了消息: {mes}")
            # 
            for i in range(8):
                mes = await converse.receive()
                mes_str = mes.decode('utf-8')
                if 'value' in mes_str:
                    value_list = re.findall('.*?"value":"(.*?)".*?', mes_str,re.S)
                    global value_str
                    value_str = ','.join(value_list)

                    await converse.send('2')
                    mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","channel":"webchat-client","data":{"adaptivecards": {"selectedPassengers": "' + value_str + '"}},"passthroughIP":null,"reloadFlow":false,"resetContext":false,"resetFlow":false,"resetState":false,"sessionId":"session-' + sessionId + '","source":"device","text":"","userId":"27bca16b-15f4-4827-96b4-ec27e559aee7"}]')
                    self.logger.info(f"发送了消息: {mes}")
                    # 
                    for i in range(12):
                        await converse.receive()

                    await converse.send('2')
                    mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","channel":"webchat-client","data":{"culture":"en-GB","helpCenterFlow":"RefundAirportTaxes","type":null,"subType":null,"clientTarget":null},"passthroughIP":null,"reloadFlow":false,"resetContext":false,"resetFlow":false,"resetState":false,"sessionId":"session-' + sessionId + '","source":"device","text":"nevergiveup17apr05@qq.com",''"userId":"27bca16b-15f4-4827-96b4-ec27e559aee7"}]')
                    self.logger.info(f"发送了消息: {mes}")
                    # 
                    for i in range(3):
                        await converse.receive()

                    await converse.send('2')
                    mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","userId": "27bca16b-15f4-4827-96b4-ec27e559aee7","sessionId": "session-' + sessionId + '","channel": "webchat-client","source": "device","passthroughIP": null,"reloadFlow": false,"resetFlow": false,"resetState": false,"resetContext": false,"text": "","data": {"adaptivecards": {"phonePrefix": "+86","phone": "18611715578"}}}]')
                    self.logger.info(f"发送了消息: {mes}")
                    # 
                    for i in range(11):
                        mes = await converse.receive()
                        mes_str = mes.decode('utf-8')
                        if 'reference' in mes_str:
                            describe = re.findall('.*?reference (.*?). If .*?', mes_str, re.S)[0]
                            self.logger.info(f"返回的个案号: {describe}")
                            return describe
                else:
                    await converse.send('2')
                    mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","channel":"webchat-client","data":{"culture":"en-GB","helpCenterFlow":"RefundAirportTaxes","type":null,"subType":null,"clientTarget":null},"passthroughIP":null,"reloadFlow":false,"resetContext":false,"resetFlow":false,"resetState":false,"sessionId":"session-' + sessionId + '","source":"device","text":"nevergiveup17apr05@qq.com",''"userId":"27bca16b-15f4-4827-96b4-ec27e559aee7"}]')
                    self.logger.info(f"发送了消息: {mes}")
                    # 
                    for i in range(3):
                        await converse.receive()

                    await converse.send('2')
                    mes = await converse.send('42["processInput",{"URLToken":"cba92de4473675f50885b02f529f57aa0bb5bd878e9e0d65a4c4a19b62feabcd","userId": "27bca16b-15f4-4827-96b4-ec27e559aee7","sessionId": "session-' + sessionId + '","channel": "webchat-client","source": "device","passthroughIP": null,"reloadFlow": false,"resetFlow": false,"resetState": false,"resetContext": false,"text": "","data": {"adaptivecards": {"phonePrefix": "+86","phone": "18611715578"}}}]')
                    self.logger.info(f"发送了消息: {mes}")
                    # 
                    for i in range(15):
                        mes = await converse.receive()
                        mes_str = mes.decode('utf-8')
                        if 'reference' in mes_str:
                            describe = re.findall('.*?reference (.*?). If .*?', mes_str,re.S)[0]
                            self.logger.info(f"返回的个案号: {describe}")
                            return describe


raise exceptions.IncompleteReadError(incomplete, n)
asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of 2 expected bytes

但是这个报错是偶尔会出现,想知道为什么出现以及怎么解决



  • 写回答

5条回答 默认 最新

  • 游一游走一走 2022-11-03 21:48
    关注
    1. 确认于服务器交互的心跳交互通讯有没有,你这都是循环receive等待的,如果长时间服务不发送信息,你可能有断连的可能
    2. 尽量保持和浏览器的行为一致,把各种头都给模拟带上,可以参考官方文档

      img

    3. 如果还没解决建议尽早弃坑,从star数,issue数,最后维护时间来看,出现问题可能需要自己研究源码了,试着用其他客户端比如websocket-client

      img

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月5日
  • 创建了问题 11月3日

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序