我对 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
将同时运行。
请问有什么建议吗?
更新
作为记录,我必须gevent.sleep(0.1)
在 while 循环的最后一行添加才能完成这项工作。