如何为IRC机器人使用线程?

2024-04-25 09:51:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个主要在插件系统上工作的IRC机器人。每个插件都有一个parse()方法,当bot被ping时,这个方法将被调用(即,接收到一个包含自己名字的IRC消息)。现在,我正在迭代eachparse()方法,对于接收到的每个ping bot的消息:

            # only trigger if message is pinging bot
            if message.split()[0].find(self.config['botnick']) != -1:
                message = self.format_message(message)
                for plugin in self.plugins.
                    plugin.parse(nick, channel, message)

现在,其中一些插件可能需要一些时间来运行,从10到60秒不等。在这段时间内,bot处于无响应状态,因为它正在处理另一个任务,一旦该任务完成,它将接收任何“缓冲”消息并相应地采取行动。如果这个机器人有多个ping,显然这会导致备份。在

所以我的问题是:我该如何正确地穿线呢?我应该把每一条消息分给一个新的线程,还是应该为每个插件创建一个新的线程,一旦验证消息正在ping bot?这里的最终目标是使bot在执行前一个ping的一些任务时能够响应其他ping。在


Tags: 方法self插件消息messageifparse系统