我正在尝试使用龙卷风事件循环并行执行一系列任务。因此,我正在创建一个事件循环并创建一个由@gen.coroutine 修饰的方法,该方法会生成一个对另一个方法的 gen.Task 调用列表。
from tornado import ioloop, gen
class MyClass(object):
@gen.coroutine
def echo(text):
print text
return gen.Return()
@gen.coroutine
def send_messages(self, number):
yield [gen.Task(self.echo, x) for x in xrange(number)]
self.loop.stop()
def __init__(self):
self.loop = ioloop.IOLoop()
self.loop.add_callback(self.send_messages, 3)
self.loop.start()
MyClass()
对我来说似乎没问题,但不起作用。当我运行它时,我在 tornado/concurrent.py 中收到“TypeError:'NoneType' 对象不可迭代”错误。
知道我在这里做错了什么吗?
为了帮助调试,我发现在 send_messages() 方法中的某处放置一个 pdb 并执行 self._echo("test").result() 有很大帮助。