我对Gevent / Greenlet很新,并且已经完成了教程。 我想为每个注册团队运行一个机器人。
for bot in self.bots:
events.append(gevent.spawn(bot.start))
gevent.joinall(events)
有趣的是,如果我不使用while true
循环,我会得到控制台中显示的两个机器人bot_id
。
def start(self):
while True:
for reply in self.slack_client.rtm_read():
self.input(reply)
time.sleep(0.1)
logger.info("Log:{0}".format(self.bot_id))
但是一旦我使用无限循环,我只能看到一个机器人的id被显示。好像其他任务正在等待这个任务完成,这没有任何意义。我认为gevent.joinall
会并行运行。
对此有任何建议吗?
更新
为了记录,我必须在while循环的最后一行添加gevent.sleep(0.1)
才能使其正常工作。
答案 0 :(得分:2)