【问题标题】:IOLoop.add_callback vs IOLoop.add_timeout in Tornado?Tornado 中的 IOLoop.add_callback 与 IOLoop.add_timeout?
【发布时间】:2012-03-26 18:38:18
【问题描述】:

我正在使用 Tornado 进行网络聊天,并且混淆了 IOLoop.add_callback 和 IOLoop.add_timeout。

据我所知,IOLoop.add_timeout 有一个特定的时间间隔,那么 IOLoop.add_callback 呢? Tornado 是否有固定的时间间隔?还是 IOLoop.add_callback 没有间隔,是基于 IO 事件的?

我只是无法从 Tornado 文档中找到详细信息。
http://www.tornadoweb.org/documentation/ioloop.html

【问题讨论】:

    标签: python web chat tornado long-polling


    【解决方案1】:

    根据IOLoop's source code 和文档,add_callback 只是注册了一个稍后执行的回调函数,方法是将其附加到列表中。然后,在下一次 IOLoop 迭代中,它调用每个回调(按 FIFO 顺序)。 Add_callback 必须在您有可用的东西时调用,例如 I/O 事件。更多详情,请查看article

    【讨论】:

    • 我将 add_timeout 放在我的长轮询处理函数(带有装饰器 @tornado.web.asynchronous 的函数)的末尾,它工作正常,但它不是真正的实时处理程序。我用add_callback替换add_timeout,系统挂了!
    • 如果您在某处进行长轮询,则必须调用 add_timeout 几次以“捕获”事件,如本示例中所述 hymloth.posterous.com/bringing-celery-and-tornado-together
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多