我正在制作一个主要在插件系统上工作的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。在
目前没有回答
相关问题 更多 >
编程相关推荐