Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

插件异常导致机器人断线问题 #31

Closed
ImSingee opened this issue Dec 24, 2018 · 21 comments
Closed

插件异常导致机器人断线问题 #31

ImSingee opened this issue Dec 24, 2018 · 21 comments

Comments

@ImSingee
Copy link

经常出现一种情况是 CoolQ Http API 上报消息成功,但是回复消息失败

目前发现的一定会出现这种情况的情形:代码出了问题产生异常未处理
还有一种不太确定的情况是长时间无人给机器人发消息(额也可能是这期间出现了触发异常的消息?没存日志……)

因为没有保存具体的日志因此暂时没办法贴出问题日志来。。如果需要的话我再写相关代码存吧【另外说一句,希望给一个便捷的文件存储的 Handler 而不是我自己写。。】

在 CoolQ Http API 插件重启即可解决

因此猜测此问题发生的原因:异常导致了 websocket 连接中断

建议的解决方案:全局加上异常处理防止 plugin 导致 websocket 连接断开

@stdrc
Copy link
Member

stdrc commented Dec 24, 2018

大概率是和 #22 同样的问题,可以看一下

@ImSingee
Copy link
Author

OK 好的,我回去试试自己心跳(嗯我的反向 WebSocket 也是在阿里云。。)

不过自己的代码写出 bug 产生异常很容易发生,希望可以做到我的代码出问题没有 except none 有一个全局的 except 吧

@stdrc
Copy link
Member

stdrc commented Dec 24, 2018

None 现在命令有全局 except

@ImSingee
Copy link
Author

但是我只要是自己的插件出问题控制台报错以后 100% 出现给机器人发消息插件能收到消息但是回复消息失败……

另外就是出问题以后 Ctrl+C 退出机器人的时候错误日志会出现一次

@ImSingee
Copy link
Author

ImSingee commented Dec 24, 2018

换句话说,现在的全局 except 似乎只做到了没有断开 event(事件上报正常),但是 api 会断开(调用命令回复失败)

@stdrc
Copy link
Member

stdrc commented Dec 24, 2018

api 连接的问题,多半是因为 #22

None 的命令处理已经捕获了所有异常,理论上不太可能在命令里出现让连接断开的情况了,总之有空你先试下那个 issue 里的解法

@ImSingee
Copy link
Author

OK 好的

@ImSingee
Copy link
Author

做了每分钟一次 get_status,然后稳定运行了一个多小时到今天的 3:01,3:02 开始就调用失败了……

依然是能收到事件发不出去消息

@stdrc
Copy link
Member

stdrc commented Dec 25, 2018

@ImSingee NoneBot 日志里面有什么异常嘛,除了 ApiNotFound

@ImSingee
Copy link
Author

我现在只能看到 ApiNotFound…… 昨天三点多的日志被刷掉了,一会我加一下日志存储吧,等再掉线了看看掉线前后时间点的日志

@ImSingee
Copy link
Author

出现了掉线 没有任何错误日志
image

附:我自己完成的心跳代码
image

@stdrc
Copy link
Member

stdrc commented Dec 25, 2018

唔……那么你的 NoneBot 和插件通信是走公网 IP 的吗,还是本机

@ImSingee
Copy link
Author

公网……

CoolQ 运行在一台 Windows 上,None 部署在了腾讯云

@stdrc
Copy link
Member

stdrc commented Dec 25, 2018

我发了个 v0.5.2,给命令、自然语言处理器、通知和请求处理器都加了全局 except,你试试看

另外还是建议 酷Q 和后端跑在同一个机器上,因为国内那些云确实会掐连接

@ImSingee
Copy link
Author

OK 我再试试。。
主要是不知道为什么我的酷 Q 用 docker 非常不稳定……

@ImSingee
Copy link
Author

好吧很诡异依然掉线

能否考虑支持把 api 和 event 放到一个连接的模式?因为我看 event 并不会断……

@ImSingee
Copy link
Author

哎我读了一下 aiocqhttp 的源码发现支持这个…… 我去试试

@stdrc
Copy link
Member

stdrc commented Dec 26, 2018

@ImSingee 嗯现在支持 Universal 客户端,两个在同一个连接上

@ImSingee
Copy link
Author

OK,换成一个连接 + Universal 稳定了

@miranquil
Copy link
Contributor

@ImSingee 嗯现在支持 Universal 客户端,两个在同一个连接上

现在支持一个链接了?!之前看旧的issues还说不支持来着……

    "ws_reverse_url": "ws://127.0.0.1/ws/",
    "ws_reverse_use_universal_client": true,

这样么?

@stdrc
Copy link
Member

stdrc commented Dec 28, 2018

@yorushika 是这样

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants