code: def top_stories(self, limit=5, first=None, last=None, json=False):
          
  
          story_ids = requests.get(TOP_STORIES_URL).json()
          story_urls = []
          for story_id in story_ids:
              url = API_BASE + "item/" + str(story_id) + '.json'
              story_urls.append(url)
  
          if first and last:
              story_urls = story_urls[first:last]
              if limit != 5:
                  story_urls[:limit]  # default not given
          else:
              story_urls = story_urls[:limit]
  
          # try:
          #     response_queue = fetch_parallel(story_urls)
          #     if json:
          #         while not response_queue.empty():
          #             yield response_queue.get()
          #     else:
          #         while not response_queue.empty():
          #             yield story_parser(response_queue.get())
          # except AttributeError:
          #     Exception("Too many requests worker!!")
  
          # using gevent
          response_list = fetch_event(story_urls)
          if json:
              yield response_list
          else:
              for response in response_list:
                  yield story_parser(response)
docs: Get the top story objects list
  
          params :
              limit = (default | 5) number of story objects needed 
              json = (default | False) 
  
          The method uses asynchronous grequest form gevent