code: def __request_start(self, queue_item):
          
  
          try:
              action = self.__options.callbacks.request_before_start(self.queue, queue_item)
          except Exception as e:
              action = None
              print(e)
              print(traceback.format_exc())
  
          if action == CrawlerActions.DO_STOP_CRAWLING:
              self.__should_stop = True
  
          if action == CrawlerActions.DO_SKIP_TO_NEXT:
              self.queue.move(queue_item, QueueItem.STATUS_FINISHED)
              self.__should_spawn_new_requests = True
  
          if action == CrawlerActions.DO_CONTINUE_CRAWLING or action is None:
              self.queue.move(queue_item, QueueItem.STATUS_IN_PROGRESS)
  
              thread = CrawlerThread(self.__request_finish, self.__lock, self.__options, queue_item)
              self.__threads[queue_item.get_hash()] = thread
              thread.daemon = True
              thread.start()
docs: Execute the request in given queue item.
  
          Args:
              queue_item (:class:`nyawc.QueueItem`): The request/response pair to scrape.