getPage внутри отложенного объекта печати?
Я хотел бы создать обратный вызов, который делает getPage
на определенный URL-адрес и распечатывает его, когда операция завершена. В настоящее время, когда я печатаю d
или же page
(см. код ниже), я получаю ссылку на отложенный объект против содержимого page
,
Почему место в памяти отложенного объекта изменяется между печатью page
и распечатать d
?
В конце концов я бы хотел, чтобы эта программа просматривала список из 4 моих веб-сайтов, создавала обратные вызовы для каждого из этих отдельных соединений, запускала их и печатала каждую страницу, когда они были готовы. Если спросить не так уж много, можно ли это продемонстрировать?
from twisted.web.client import getPage
from twisted.internet import reactor
from twisted.internet.defer import Deferred
def connect(url):
page = getPage(url)
print page
возвращается <Deferred object at 0x23dcc68>
,
print d
возвращается <Deferred object at 0x7f1bacacc3b0>
,
Текущий результат (на примере http://www.example.com):
d = Deferred()
d.addCallback(connect)
reactor.callWhenRunning(d.callback, 'http://www.example.com')
reactor.callLater(4, reactor.stop)
reactor.run()
1 ответ
Вы, вероятно, должны использовать более новую, spiffier twisted.web.client.Agent
а не старый и несколько ограниченныйgetPage
, К счастью для вас, есть очень подробное руководство о том, как использоватьAgent
, а также некоторые из его сопутствующих классов, таких как ProxyAgent
,RedirectAgent
, CookieAgent
, а также ContentDecoderAgent
,
Во-первых, вы можете ознакомиться с документацией по использованиюDeferred
с.