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

时间:2015-11-28 20:06:40

标签: python multithreading python-2.7 subprocess irc

我正在制作一个主要用于插件系统的IRC机器人。每个插件都有一个parse()方法,当机器人被ping时,它将被调用(I.E.收到一个IRC消息,其中有自己的名字)。现在,我正在迭代每个parse()方法,就像收到的每个正在ping机器人的消息一样:

            # 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秒。在此期间,机器人没有响应,因为它正在处理另一个任务,一旦完成该任务,它将接收任何“缓冲”消息并相应地采取行动。如果这个机器人有多次ping,显然这会导致备份。

所以我的问题是:我应该如何正确地进行线程化?我应该将每条消息分配给一个新线程,还是在验证该消息正在ping该机器人之后为每个插件创建一个新线程?这里的最终目标是能够让机器人在为之前的ping执行某些任务时响应其他ping。

0 个答案:

没有答案