Skip to content

频道关闭时的CPU泄漏问题 #3

@lavrock

Description

@lavrock

你好,我们发现每次频道被关闭时会有5%左右的CPU降不下来,下面代码加入最后一行后 CPU 能讲下来,不过后面的功能会出问题,有时会收不到新的频道的音频数据,能帮忙排查一下吗?

` async def disconnect(self) -> None:
"""
Disconnects the channel.
"""
logger.info(f"ai call Disconnecting from channel {self.channelId}")
if self.connection_state == 1:
return

    disconnected_future = asyncio.Future[None]()

    def callback(agora_rtc_conn: RTCConnection, conn_info: RTCConnInfo, reason):
        self.off("connection_state_changed", callback)
        if conn_info.state == 1:
            disconnected_future.set_result(None)

    self.on("connection_state_changed", callback)
    if self.stream_message_task:
        self.stream_message_task.cancel()
        try:
            await self.stream_message_task
        except asyncio.CancelledError:
            logger.info(f"ai call stream message task cancelled")
    if self.chat.message_task:
        self.chat.message_task.cancel()
        try:
            await self.chat.message_task
        except asyncio.CancelledError:
            logger.info(f"ai call message task cancelled")
    
    self.connection.disconnect()
    await disconnected_future

    self.connection.release()`

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