在Tornado.ioloop.IOloop.start中只有一行代码:
raise NotImplementedError()我想知道在下面的代码之后会发生什么
app.listen(8888)
tornado.ioloop.IOLoop.instance().start() 谢谢。
发布于 2015-01-25 07:34:37
实际上并没有使用class IOLoop(Configurable)。它只是一个基类。龙卷风将选择适当的子类作为默认的IOLoop。有这样做的类方法:
@classmethod
def configurable_default(cls):
if hasattr(select, "epoll"):
from tornado.platform.epoll import EPollIOLoop
return EPollIOLoop
if hasattr(select, "kqueue"):
# Python 2.6+ on BSD or Mac
from tornado.platform.kqueue import KQueueIOLoop
return KQueueIOLoop
from tornado.platform.select import SelectIOLoop
return SelectIOLoop实现细节有点琐碎。首先,在tornado.util中有一个class Configurable(object)。简单地说,它将使用configurable_default来配置自己。如前所述,我们的IOLoop是Configurable的子类,并使用自己的configurable_default选择合适的IOLoop子类,该子类具有start函数和其他所有功能的工作实现。
在Linux上,实际执行PollIOLoop.start方法。其执行情况如下:
https://github.com/tornadoweb/tornado/blob/master/tornado/ioloop.py#L705
https://stackoverflow.com/questions/28134241
复制相似问题