Skip to content

Set changed size during iteration #63

@xian18

Description

@xian18

描述你遇到的问题:

收到群消息后会出现这个Exception

raceback (most recent call last):
  File "/anaconda3/lib/python3.7/site-packages/graia/broadcast/__init__.py", line 240, in Executor
    await dii.lookup_param(name, annotation, default)
  File "/anaconda3/lib/python3.7/site-packages/graia/broadcast/interfaces/dispatcher.py", line 227, in lookup_param
    lambda x: [DispatcherSource(self.execution_contexts[-1].always_dispatchers)]
  File "/anaconda3/lib/python3.7/site-packages/graia/broadcast/interfaces/dispatcher.py", line 143, in dispatcher_generator
    for dispatcher in source.dispatchers:
RuntimeError: Set changed size during iteration

复现步骤:
该 BUG 会在进行以下操作后出现:

  1. 发送两条群消息

发生错误的代码

from graia.application.entry import GraiaMiraiApplication
from graia.broadcast import Broadcast
import asyncio
from graia.application.session import Session

loop=asyncio.get_event_loop()
bcc=Broadcast(loop=loop)
app=GraiaMiraiApplication(
    broadcast=bcc,
    connect_info=Session(
        host='http://127.0.0.1:800000',   #你mirai-api-http监听的地址以及端口
        authKey='mirai-api-http-token',      #在mirai-api-http设置的authKey
        account="qq number",             #要使用的对应的bot 的qq号
        websocket=True                  #记得在mirai-api-http里面设置开启websocket
    ),
    enable_chat_log=True,
    debug=True
)
app.launch_blocking()

控制台日志输出截图:

Screenshot from 2020-12-05 14-12-53

运行环境:

  • 操作系统: Ubuntu 18.04
  • mirai-core 版本: mirai-console-1.0-M4.jar
  • mirai-api-http 版本: mirai-api-http-v1.8.3
  • graia-application-mirai 版本: 0.11.0
  • 是否出现在机器人长期运行后: 否

额外信息:

只使用BroadCast(在尝试简化代码)貌似没有这个问题.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions