I'm sort of new to this whole async game (mostly been a Django guy), but I was wondering: how can I pass extra parameters to Tornado's AsyncHTTPClient.fetch callback? For example, I'm tracking the number of times a callback has been called (in order to wait until a certain number have executed before working on the data), and I'd like to do something like:
def getPage(self, items,iteration):
http = AsyncHTTPClient()
http.fetch(feed, callback=self.resp(items,iteration))
def resp(self, response, items, iteration):
#do stuff
self.finish()
You need to "bind" your additional arguments. Use functools.partial, like this:
items = ..
iteration = ..
cb = functools.partial(self.resp, items, iteration)
or you could use lambda, like this:
cb = lambda : self.resp(items, iteration)
(you probably need to add the signature to def resp(self, items, iteration, response):)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With