HarukaBot
HarukaBot copied to clipboard
【错误回报】haruka_bot | 爬取动态失败:-352 -352
运行环境
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
同样出现
+1 但是好像不影响直播推送、动态推送?
+1,而且没办法推送动态和直播了
+1
-833 -412之类的解决了吗
+1 单独部署和nb部署都从23号下午3点左右开始出现相同报错 亲测动态无法正常推送
臣附议,同样出现
+1 同样出现类似情况。无法正常推送动态,每10s(HARUKA_INTERVAL)报错一次。
同样出现
+1
1
+1,急急急
+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
+1,直播推送正常,动态推送有延迟,可能出现几小时的延迟
+1,四天了,求求大佬们看一看
+1,但是直播推送,动态推送均正常。 环境是windows ltsc 21h1
原因我发现了是bilireq
的一个grpc api请求问题
https://github.com/SK-415/HarukaBot/blob/6d454570fea335d4d0ffa7cf23f68cc178578ef2/haruka_bot/plugins/pusher/dynamic_pusher.py#L38-L44
具体就是装饰器里面都会携带metadata
恰好这个请求不需要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即可
好了 日志不报错了 虽然不改也没啥只是会疯狂写日志而已
oh ,发现这个还是不解决问题,本地复现是可以避免 但是好像服务器还是会疯狂写日志 我再研究下 而且只改kwargs会让超时时间和代理失效只能做一个简单的替代方案 要改的话只能改装饰器加参数
原因我发现了是
bilireq
的一个grpc api请求问题https://github.com/SK-415/HarukaBot/blob/6d454570fea335d4d0ffa7cf23f68cc178578ef2/haruka_bot/plugins/pusher/dynamic_pusher.py#L38-L44
具体就是装饰器里面都会携带metadata
恰好这个请求不需要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即可
好了 日志不报错了 虽然不改也没啥只是会疯狂写日志而已
照着改了bilireq库 https://github.com/SK-415/bilireq/blob/main/bilireq/grpc/dynamic/init.py 的这一行不传第二个参数后,测试了不报错352,动态能及时推送了,十分感谢!!!
应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样
经过测试 加大HARUKA_DYNAMIC_INTERVAL
的时间以及修改之前的metadata入参可以避免反复写日志
应该是同一个时间段不能多次请求这个接口
应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样
经过测试 加大
HARUKA_DYNAMIC_INTERVAL
的时间以及修改之前的metadata入参可以避免反复写日志 应该是同一个时间段不能多次请求这个接口
写-352日志的间隔时间=HARUKA_DYNAMIC_INTERVAL设置的时间 ~~如果只加大HARUKA_DYNAMIC_INTERVAL(我设置成60)也无法避免-352且无法正常推送动态。只是让它变成了60秒报错一次而已~~ ~~如果同时修改,仍然无法正常推送动态,只是后台不报错了。(我连续发了四条动态一条也没推送)~~ ~~静待下一步解决策略(~~ 实际上两者均操作确实避免了日志刷屏和动态推送问题不过需要挂一段时间
应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样 经过测试 加大
HARUKA_DYNAMIC_INTERVAL
的时间以及修改之前的metadata入参可以避免反复写日志 应该是同一个时间段不能多次请求这个接口写-352日志的间隔时间=HARUKA_DYNAMIC_INTERVAL设置的时间 如果只加大HARUKA_DYNAMIC_INTERVAL(我设置成60)也无法避免-352且无法正常推送动态。只是让它变成了60秒报错一次而已 如果同时修改,仍然无法正常推送动态,只是后台不报错了。(我连续发了四条动态一条也没推送) 静待下一步解决策略(
他用了一个很奇怪的设计,就是他的最近一条动态信息是保存在内存的不是持久化的在sqlite
中的
也就是当你初次启动的时候它需要几次同步来加载你最近一次的最新动态信息(这个取决于你关注的人个数
也就是你需要等它将你的记录到内存中之后再发动态才会触发下面这段
大概就是等待你的HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)初始化好了,
之后就是你发完新动态之后等待HARUKA_DYNAMIC_INTERVAL*(你的关注人数) 它就会提示到新动态了
(说实话,这个动态爬取竟然不是一起爬的 而是每次执行 uid = await db.next_uid("dynamic")
遍历的很奇怪)
他用了一个很奇怪的设计,就是他的最近一条动态信息是保存在内存的不是持久化的在
sqlite
中的 也就是当你初次启动的时候它需要几次同步来加载你最近一次的最新动态信息(这个取决于你关注的人个数也就是你需要等它将你的记录到内存中之后再发动态才会触发下面这段
大概就是等待你的HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)初始化好了, 之后就是你发完新动态之后等待HARUKA_DYNAMIC_INTERVAL*(你的关注人数) 它就会提示到新动态了 (说实话,这个动态爬取竟然不是一起爬的 而是每次执行
uid = await db.next_uid("dynamic")
遍历的很奇怪)
原来是如此的机理……我后来没管它 它也开始自己推送了我甚至都没反应过来,这个方法确实有效果我去改一下上面的评论()
应该是这个接口有限流操作 刚才那个只是临时解决 发现部署在服务器上 超过一定的请求就会这样 经过测试 加大
HARUKA_DYNAMIC_INTERVAL
的时间以及修改之前的metadata入参可以避免反复写日志 应该是同一个时间段不能多次请求这个接口写-352日志的间隔时间=HARUKA_DYNAMIC_INTERVAL设置的时间 如果只加大HARUKA_DYNAMIC_INTERVAL(我设置成60)也无法避免-352且无法正常推送动态。只是让它变成了60秒报错一次而已 如果同时修改,仍然无法正常推送动态,只是后台不报错了。(我连续发了四条动态一条也没推送) 静待下一步解决策略(
他用了一个很奇怪的设计,就是他的最近一条动态信息是保存在内存的不是持久化的在
sqlite
中的 也就是当你初次启动的时候它需要几次同步来加载你最近一次的最新动态信息(这个取决于你关注的人个数也就是你需要等它将你的记录到内存中之后再发动态才会触发下面这段
大概就是等待你的HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)初始化好了, 之后就是你发完新动态之后等待HARUKA_DYNAMIC_INTERVAL*(你的关注人数) 它就会提示到新动态了 (说实话,这个动态爬取竟然不是一起爬的 而是每次执行
uid = await db.next_uid("dynamic")
遍历的很奇怪)
确实不352了 (悄悄的问下需要挂多长时间才能继续推送)
改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
确实不352了 (悄悄的问下需要挂多长时间才能继续推送)
上面noahlias说过是HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)秒钟。
确实不352了 (悄悄的问下需要挂多长时间才能继续推送)
上面noahlias说过是HARUKA_DYNAMIC_INTERVAL*(你的关注人数+1)秒钟。
好家伙 原来如此
改ua的办法已经无效了(
现在的解决方法是按照这个PR自行修改site-packages 中的bilireq库 https://github.com/SK-415/bilireq/pull/26/files
我修改了bilireq库之后还是会报错
我修改了bilireq库之后还是会报错
尝试增加HARUKA_DYNAMIC_INTERVAL呢?报错仍然是-352吗
改ua的办法已经无效了(
现在的解决方法是按照这个PR自行修改site-packages 中的bilireq库 https://github.com/SK-415/bilireq/pull/26/files
非常感谢!能正常运行了!