Closed Clulu1499 closed 1 week ago
和 #294 一样,貌似有时候就不会,可能和消息发送有关,用的是QQ频道还是onebot
和 #294 一样,貌似有时候就不会,可能和消息发送有关,用的是QQ频道还是onebot
是onebot,但是报错之后手动输入/任务 和/签到 就能跑完所有账号
@Ljzd-PRO
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/a0dd139a043db38238d8a10c9675578fc56f8673/src/nonebot_plugin_mystool/api/myb_missions_api.py#L112 我在任务签到这每个return前都添加了logger查看需要return的内容,出现这个问题的时候
sign_status, sign_points = await mission_obj.sign(user)
TypeError: cannot unpack non-iterable NoneType object
还是没有看到任何一条新增的logger日志。是不是因为with,所以出现异常导致的返回都是none的情况下才没有日志出现
可以检查一下 sign
函数内部运行情况。如果有异常且未被拦截的话,会抛出异常,而不是返回 None
,目前没看出哪边有可能返回 None
,有异常都会拦截,并且都会返回元组,没有异常的所有情况也都会有元组返回。
报错以后再手动运行能够成功,可能是因为之前已经完成人机验证了,不会进入人机验证有问题的那一环
报错以后再手动运行能够成功,可能是因为之前已经完成人机验证了,不会进入人机验证有问题的那一环
是的,所以这个问题每天第一次才会有,奇怪的是如果所以情况都会有元组返回,这个实际上不是的,就如我截图log里一样,我在每个return前都有设置一个debug级的logger,且在每次迭代中新增了打印res.text
的logger
每当出现这个问题时元组的logger和第二次迭代请求的res并没有打印出来,那是不是说明continue导致第二次迭代并没有成功还影响到了元组的返回
报错以后再手动运行能够成功,可能是因为之前已经完成人机验证了,不会进入人机验证有问题的那一环
是的,所以这个问题每天第一次才会有,奇怪的是如果所以情况都会有元组返回,这个实际上不是的,就如我截图log里一样,我在每个return前都有设置一个debug级的logger,且在每次迭代中新增了打印
res.text
的logger 每当出现这个问题时元组的logger和第二次迭代请求的res并没有打印出来,那是不是说明continue导致第二次迭代并没有成功还影响到了元组的返回
看了一下应该是第二次迭代在 tenacity 的 AsyncRetrying
的 __anext__
里就已经因为不满足重试条件,抛出了 StopAsyncIteration
提前停止了。然后继续执行 sign 函数,但是后续没有内容因此返回值是 None
解决方法是手动抛出一个异常来进入下一次重试,或者修改重试条件,刚刚补充返回值为 None 的情况下会重试(虽然不是函数,但是 tenacity 默认是记录为 None),现在可以再试试。
明天看下结果
应该是没问题了
每日到时间自动签到途中会出现报错,大佬能看看是什么原因吗![QQ截图20240629003608](https://github.com/Ljzd-PRO/nonebot-plugin-mystool/assets/72173120/dd5fae1d-63aa-40dc-9565-4db110bedcde)