示例#1
0
    def fetch(self,
              urls: List[str]) -> Generator[List[FetchResult], None, None]:
        """Fetches urls parallel in batches and returns a generator that yields every fetched URL batch as a list of FetchResult objects."""

        loop = self._get_event_loop()
        queue = URLQueue(urls=urls)
        while not queue.is_empty():
            url_batch = [
                next(queue) for _ in range(self.fetch_batch_size)
                if not queue.is_empty()
            ]
            yield loop.run_until_complete(self._fetch_parallel_job(url_batch))
示例#2
0
 def test_url_queue_is_empty_false(self, url_queue: URLQueue):
     url_queue.add(self.test_urls)
     assert not url_queue.is_empty()
示例#3
0
 def test_process_url_queue(self, url_queue: URLQueue):
     url_queue.add(self.test_urls)
     for url in url_queue:
         assert url in self.test_urls
     assert url_queue.is_empty()
示例#4
0
 def test_url_queue_is_empty_true(self, url_queue: URLQueue):
     assert url_queue.is_empty()