Twisted:在reactor运行时创建延迟

时间:2012-01-18 18:40:18

标签: python twisted

如何在启动反应堆后添加延迟?

例如,我如何实现以下工作流程?

  1. 获取网页列表&提取数据
  2. 根据此数据,获取未知数量的其他网站
  3. 目前我做以下事情:

    1. 定义列表&上面第1点的函数并创建一个延迟
    2. run reactor
    3. 在处理来自1的响应的函数中,为上面的第2点创建其他延迟。不幸的是,这些从未被称为......
    4. 非常感谢。

1 个答案:

答案 0 :(得分:2)

语言“添加延迟”表示您误解了延期的目的。延迟只是一个方便的API,用于将回调与长时间运行的异步操作相关联。延期不会收集在任何一个集合中或由反应堆跟踪。它们是绑定一段代码的常见对象,为另一段代码提供了一些结果。

那就是说,听起来你做的大致正确。与反应堆运行时相比,Deferreds在反应堆运行时的工作方式没有任何差别。这是因为反应堆不参与Deferreds的操作。

如果你有没有被调用的回调,那是因为他们附加的Deferreds没有得到结果。如果没有看到至少一些代码(最好是short, self-contained, correct example),就没有办法说明为什么会发生这种情况。