[Twisted-web] Newbie question about chaining deffereds
rlotun at gmail.com
Sun Dec 20 11:27:08 EST 2009
> I need to download a videofile, a thumbnail to it, process that
> videofile, and after the processing is finished, process the thumbnail
> with the result of processing the video.
> url = 'http://..../video.flv'
> filename = 'video.flv'
> video_deffered = downloadPage(url, filename)
> video_deffered.addCallback(process_video, filename) => process_video
> returns video_id
> url = 'http://..../thumbnail.jpg'
> filename = 'thumbnail.jpg'
> image_deffered = downloadPage(url, filename)
> image_deffered.addCallback(process_image, filename) =< video_id needed here
As far as I understand you want to:
1. Get the videofile - represented by video_deferred
2. Process the videofile after it's downloaded (the function process_video)
3. Get the thumbnail in parallel - image_deferred
4. Do a final processing *after* step 2 and step 3 (process_image)
What you want to do is fire off video_deferred and image_deferred as
you do immediately, but put the two deferreds in a DeferredList. What
this allows you to do is attach a callback that will only fire when
*both* jobs have been completed. The addCallback on that deferred list
will be process_image.
To run jobs in threads, please take a look a
Hope that helps.
mobile: +44 (0)7521 310 763
email: rlotun at gmail.com
work: reza at tweetdeck.com
More information about the Twisted-web