HarukaBot icon indicating copy to clipboard operation
HarukaBot copied to clipboard

【错误回报】haruka_bot | 爬取动态失败:-352 -352

Open zhdl889 opened this issue 1 year ago • 38 comments

运行环境

Windows Server 2022、Windows 11

HarukaBot 版本

v1.6.0.post5

go-cqhttp 版本

v1.1.0

错误描述

两台机子都出现大量报错并且无法推送动态消息

报错日志(如果有)

08-23 15:47:16 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:16 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:16 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:17 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:18 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:19 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:19 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:19 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:20 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:20 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:20 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:20 [ERROR] haruka_bot | 爬取动态失败:-352 -352
08-23 15:47:20 [ERROR] haruka_bot | 爬取动态失败:-352 -352

zhdl889 avatar Aug 23 '23 09:08 zhdl889

同样出现

MerlinCN avatar Aug 23 '23 11:08 MerlinCN

+1 但是好像不影响直播推送、动态推送?

cj1357 avatar Aug 23 '23 13:08 cj1357

+1,而且没办法推送动态和直播了

ryuuyuu avatar Aug 23 '23 13:08 ryuuyuu

+1

Healock avatar Aug 23 '23 15:08 Healock

-833 -412之类的解决了吗

x402 avatar Aug 23 '23 18:08 x402

+1 单独部署和nb部署都从23号下午3点左右开始出现相同报错 亲测动态无法正常推送

salspica avatar Aug 23 '23 22:08 salspica

臣附议,同样出现

bilibililiangcha avatar Aug 23 '23 23:08 bilibililiangcha

+1 同样出现类似情况。无法正常推送动态,每10s(HARUKA_INTERVAL)报错一次。

Tosd0 avatar Aug 24 '23 04:08 Tosd0

同样出现

huanxin996 avatar Aug 24 '23 08:08 huanxin996

+1

suibian23333 avatar Aug 24 '23 10:08 suibian23333

1

Wangxiaolu0716 avatar Aug 24 '23 14:08 Wangxiaolu0716

+1,急急急

NAOLIU avatar Aug 24 '23 14:08 NAOLIU

+1

爬取动态失败:-352 -352

时间:2023-08-23 15:58:37
日志记录位置:File C:\Users\Administrator\Desktop\QBot\main06\.venv\lib\site-packages\haruka_bot\plugins\pusher\dynamic_pusher.py, line 52, in dy_sched

ab-Royo avatar Aug 25 '23 06:08 ab-Royo

+1,直播推送正常,动态推送有延迟,可能出现几小时的延迟

hakureireimusama avatar Aug 26 '23 04:08 hakureireimusama

+1,四天了,求求大佬们看一看

fenixlin avatar Aug 27 '23 08:08 fenixlin

+1,但是直播推送,动态推送均正常。 环境是windows ltsc 21h1

aurorataro avatar Aug 28 '23 01:08 aurorataro

原因我发现了是bilireq的一个grpc api请求问题 https://github.com/SK-415/HarukaBot/blob/6d454570fea335d4d0ffa7cf23f68cc178578ef2/haruka_bot/plugins/pusher/dynamic_pusher.py#L38-L44

具体就是装饰器里面都会携带metadata image

恰好这个请求不需要metadata 如果携带就会-352错误,下面是最小化的demo,如果用之前的就是获取到了-352

import grpc
from google.protobuf.json_format import MessageToDict
from bilireq.grpc.protos.bilibili.app.dynamic.v2 import dynamic_pb2_grpc, dynamic_pb2
from bilireq.grpc.utils.metadata import make_metadata


def main():
    channel = grpc.secure_channel(
        "grpc.biliapi.net",
        grpc.ssl_channel_credentials(),
    )
    stub = dynamic_pb2_grpc.DynamicStub(channel)
    request = dynamic_pb2.DynSpaceReq(host_uid=1, history_offset="", page=1)
    # metadata = make_metadata()
    metadata = tuple()
    try:
        response = stub.DynSpace(
            request,
            metadata=metadata,
        )
        response_json = MessageToDict(response)
        print(response_json)
    except grpc.RpcError as e:
        print(f"Error encountered: {e}")


if __name__ == "__main__":
    main()

不过这个修改应该是在另一个仓库提pr😄

有一个替代的简单方法 这个函数不传参数metadata即可 image 好了 日志不报错了 虽然不改也没啥只是会疯狂写日志而已

oh ,发现这个还是不解决问题,本地复现是可以避免 但是好像服务器还是会疯狂写日志 我再研究下 而且只改kwargs会让超时时间和代理失效只能做一个简单的替代方案 要改的话只能改装饰器加参数

noahlias avatar Aug 28 '23 12:08 noahlias

原因我发现了是bilireq的一个grpc api请求问题

https://github.com/SK-415/HarukaBot/blob/6d454570fea335d4d0ffa7cf23f68cc178578ef2/haruka_bot/plugins/pusher/dynamic_pusher.py#L38-L44

具体就是装饰器里面都会携带metadata image

恰好这个请求不需要metadata 如果携带就会-352错误,下面是最小化的demo,如果用之前的就是获取到了-352

import grpc
from google.protobuf.json_format import MessageToDict
from bilireq.grpc.protos.bilibili.app.dynamic.v2 import dynamic_pb2_grpc, dynamic_pb2
from bilireq.grpc.utils.metadata import make_metadata


def main():
    channel = grpc.secure_channel(
        "grpc.biliapi.net",
        grpc.ssl_channel_credentials(),
    )
    stub = dynamic_pb2_grpc.DynamicStub(channel)
    request = dynamic_pb2.DynSpaceReq(host_uid=1, history_offset="", page=1)
    # metadata = make_metadata()
    metadata = tuple()
    try:
        response = stub.DynSpace(
            request,
            metadata=metadata,
        )
        response_json = MessageToDict(response)
        print(response_json)
    except grpc.RpcError as e:
        print(f"Error encountered: {e}")


if __name__ == "__main__":
    main()

不过这个修改应该是在另一个仓库提pr😄

有一个替代的简单方法 这个函数不传参数metadata即可 image 好了 日志不报错了 虽然不改也没啥只是会疯狂写日志而已

照着改了bilireq库 https://github.com/SK-415/bilireq/blob/main/bilireq/grpc/dynamic/init.py 的这一行不传第二个参数后,测试了不报错352,动态能及时推送了,十分感谢!!!

cj1357 avatar Aug 28 '23 14:08 cj1357

应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样

经过测试 加大HARUKA_DYNAMIC_INTERVAL的时间以及修改之前的metadata入参可以避免反复写日志 应该是同一个时间段不能多次请求这个接口

noahlias avatar Aug 28 '23 15:08 noahlias

应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样

经过测试 加大HARUKA_DYNAMIC_INTERVAL的时间以及修改之前的metadata入参可以避免反复写日志 应该是同一个时间段不能多次请求这个接口

写-352日志的间隔时间=HARUKA_DYNAMIC_INTERVAL设置的时间 ~~如果只加大HARUKA_DYNAMIC_INTERVAL(我设置成60)也无法避免-352且无法正常推送动态。只是让它变成了60秒报错一次而已~~ ~~如果同时修改,仍然无法正常推送动态,只是后台不报错了。(我连续发了四条动态一条也没推送)~~ ~~静待下一步解决策略(~~ 实际上两者均操作确实避免了日志刷屏和动态推送问题不过需要挂一段时间

Tosd0 avatar Aug 29 '23 03:08 Tosd0

应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样 经过测试 加大HARUKA_DYNAMIC_INTERVAL的时间以及修改之前的metadata入参可以避免反复写日志 应该是同一个时间段不能多次请求这个接口

写-352日志的间隔时间=HARUKA_DYNAMIC_INTERVAL设置的时间 如果只加大HARUKA_DYNAMIC_INTERVAL(我设置成60)也无法避免-352且无法正常推送动态。只是让它变成了60秒报错一次而已 如果同时修改,仍然无法正常推送动态,只是后台不报错了。(我连续发了四条动态一条也没推送) 静待下一步解决策略(

他用了一个很奇怪的设计,就是他的最近一条动态信息是保存在内存的不是持久化的在sqlite中的 也就是当你初次启动的时候它需要几次同步来加载你最近一次的最新动态信息(这个取决于你关注的人个数 image

也就是你需要等它将你的记录到内存中之后再发动态才会触发下面这段 image

大概就是等待你的HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)初始化好了, 之后就是你发完新动态之后等待HARUKA_DYNAMIC_INTERVAL*(你的关注人数) 它就会提示到新动态了 (说实话,这个动态爬取竟然不是一起爬的 而是每次执行 uid = await db.next_uid("dynamic") 遍历的很奇怪)

noahlias avatar Aug 29 '23 08:08 noahlias

他用了一个很奇怪的设计,就是他的最近一条动态信息是保存在内存的不是持久化的在sqlite中的 也就是当你初次启动的时候它需要几次同步来加载你最近一次的最新动态信息(这个取决于你关注的人个数

也就是你需要等它将你的记录到内存中之后再发动态才会触发下面这段

大概就是等待你的HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)初始化好了, 之后就是你发完新动态之后等待HARUKA_DYNAMIC_INTERVAL*(你的关注人数) 它就会提示到新动态了 (说实话,这个动态爬取竟然不是一起爬的 而是每次执行 uid = await db.next_uid("dynamic") 遍历的很奇怪)

原来是如此的机理……我后来没管它 它也开始自己推送了我甚至都没反应过来,这个方法确实有效果我去改一下上面的评论()

Tosd0 avatar Aug 29 '23 08:08 Tosd0

应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样 经过测试 加大HARUKA_DYNAMIC_INTERVAL的时间以及修改之前的metadata入参可以避免反复写日志 应该是同一个时间段不能多次请求这个接口

写-352日志的间隔时间=HARUKA_DYNAMIC_INTERVAL设置的时间 如果只加大HARUKA_DYNAMIC_INTERVAL(我设置成60)也无法避免-352且无法正常推送动态。只是让它变成了60秒报错一次而已 如果同时修改,仍然无法正常推送动态,只是后台不报错了。(我连续发了四条动态一条也没推送) 静待下一步解决策略(

他用了一个很奇怪的设计,就是他的最近一条动态信息是保存在内存的不是持久化的在sqlite中的 也就是当你初次启动的时候它需要几次同步来加载你最近一次的最新动态信息(这个取决于你关注的人个数 image

也就是你需要等它将你的记录到内存中之后再发动态才会触发下面这段 image

大概就是等待你的HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)初始化好了, 之后就是你发完新动态之后等待HARUKA_DYNAMIC_INTERVAL*(你的关注人数) 它就会提示到新动态了 (说实话,这个动态爬取竟然不是一起爬的 而是每次执行 uid = await db.next_uid("dynamic") 遍历的很奇怪)

确实不352了 (悄悄的问下需要挂多长时间才能继续推送)

kevinluo6191 avatar Sep 02 '23 12:09 kevinluo6191

改ua的办法已经无效了(

09-02 23:27:28 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:28 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:28 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:28 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:29 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:29 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:29 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:29 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:30 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:30 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:30 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:30 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:30 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:31 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:31 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:31 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:31 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:32 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:32 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:32 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:32 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:32 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:33 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:33 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:33 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:33 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:34 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:34 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:34 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:34 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:35 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:35 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:36 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:36 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:36 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:37 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:37 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:37 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:37 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:38 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:38 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:38 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:38 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:39 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:39 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:39 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:39 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:40 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:40 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:40 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:40 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:40 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:41 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:41 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:41 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:41 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:42 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:42 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:42 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:42 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:43 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:43 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:43 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:43 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:43 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:44 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:44 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:44 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:44 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:45 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:45 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:45 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:45 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:46 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:46 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:46 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:46 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:47 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:47 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:47 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:47 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:48 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:48 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:48 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:48 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:49 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:49 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:49 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:49 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:49 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:50 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:50 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:50 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:50 [ERROR] haruka_bot | 爬取动态失败:-352 -352
09-02 23:27:51 [ERROR] haruka_bot | 爬取动态失败:-352 -352

250king avatar Sep 02 '23 15:09 250king

确实不352了 (悄悄的问下需要挂多长时间才能继续推送)

上面noahlias说过是HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)秒钟。

Tosd0 avatar Sep 03 '23 03:09 Tosd0

确实不352了 (悄悄的问下需要挂多长时间才能继续推送)

上面noahlias说过是HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)秒钟。

好家伙 原来如此

kevinluo6191 avatar Sep 03 '23 03:09 kevinluo6191

改ua的办法已经无效了(

现在的解决方法是按照这个PR自行修改site-packages 中的bilireq库 https://github.com/SK-415/bilireq/pull/26/files

Tosd0 avatar Sep 03 '23 03:09 Tosd0

我修改了bilireq库之后还是会报错

oringe-1 avatar Sep 03 '23 15:09 oringe-1

我修改了bilireq库之后还是会报错

尝试增加HARUKA_DYNAMIC_INTERVAL呢?报错仍然是-352吗

Tosd0 avatar Sep 03 '23 16:09 Tosd0

改ua的办法已经无效了(

现在的解决方法是按照这个PR自行修改site-packages 中的bilireq库 https://github.com/SK-415/bilireq/pull/26/files

非常感谢!能正常运行了!

ryuuyuu avatar Sep 03 '23 23:09 ryuuyuu