Twisted: создание отложений во время работы реактора - PullRequest
0 голосов
/ 18 января 2012

как добавить отсрочку после запуска реактора?

Например, как реализовать следующий рабочий процесс?

  1. получить список веб-страниц и извлечь данные
  2. на основе этих данных получить неизвестное количество других веб-сайтов

В настоящее время я делаю следующее:

  1. определяю список и функции для пункта 1 выше и создаюa deferreds
  2. запустить реактор
  3. в функциях, обрабатывающих ответы от 1, создать другие отложенные значения для пункта 2 выше.К сожалению, их никогда не называют ...

Большое спасибо.

1 Ответ

2 голосов
/ 19 января 2012

Язык «добавить отложенных» предполагает, что вы неправильно понимаете цель отложенных. Deferred - это просто удобный API для связи обратных вызовов с длительными асинхронными операциями. Отложенные не собираются ни в одной коллекции или отслеживаются реактором. Это обычный объект, связывающий кусок кода, предоставляющий некоторый результат другому фрагменту кода, потребляющему этот результат.

Тем не менее, похоже, что вы делаете примерно правильные вещи. Нет никакой разницы в том, как работают Отложенные, когда реактор работает, по сравнению с тем, когда он не работает. Это потому, что реактор не играет никакой роли в работе Deferreds.

Если у вас есть обратные вызовы, которые не вызываются, это потому, что отложенные, к которым они прикреплены, не получают результатов. Невозможно сказать, почему это происходит, не увидев хотя бы часть вашего кода (и, желательно, короткий, самостоятельный, правильный пример ).

...