def process_feed(self, hdl): """ Callback to be called by HeadDownloader when the HEAD downloading has finished. """ self.update_count_downloading(-1) if hdl.error: self.logger.info("Couldn't retrieve header '%s'. Details:\ \n%s" % (hdl.url, hdl.error)) return for feed in self.feeds: if feed.url == hdl.url: break feed.last_check = datetime.now() try: result_modified = (feed.last_modified != hdl.info["last-modified"]) except KeyError: result_modified = True # Check last_modified if not feed.last_modified or result_modified: # Download the Feed dl = Downloader(feed.url) dl.start() dl.join(TIMEOUT * 2) if dl.is_alive(): self.logger.info("Time out while getting feed '%s'." % (dl.url)) return # Check and get new entries new_entries = self._check_entries(feed) # Associate entries with feed and update 'last_modified' field feed.entries = new_entries try: feed.last_modified = hdl.info["last-modified"] except KeyError: # last-modified header doesn't exist pass