首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tornado.ioloop.IOloop.start函数是如何工作的

Tornado.ioloop.IOloop.start函数是如何工作的
EN

Stack Overflow用户
提问于 2015-01-25 07:28:26
回答 1查看 582关注 0票数 0

在Tornado.ioloop.IOloop.start中只有一行代码:

代码语言:javascript
复制
raise NotImplementedError()

我想知道在下面的代码之后会发生什么

代码语言:javascript
复制
app.listen(8888)
tornado.ioloop.IOLoop.instance().start() 

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-25 07:34:37

实际上并没有使用class IOLoop(Configurable)。它只是一个基类。龙卷风将选择适当的子类作为默认的IOLoop。有这样做的类方法:

代码语言:javascript
复制
@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来配置自己。如前所述,我们的IOLoopConfigurable的子类,并使用自己的configurable_default选择合适的IOLoop子类,该子类具有start函数和其他所有功能的工作实现。

在Linux上,实际执行PollIOLoop.start方法。其执行情况如下:

https://github.com/tornadoweb/tornado/blob/master/tornado/ioloop.py#L705

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28134241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档