code: def fetch(context, data):
      
      url = data.get('url')
      attempt = data.pop('retry_attempt', 1)
      try:
          result = context.http.get(url, lazy=True)
          rules = context.get('rules', {'match_all': {}})
          if not Rule.get_rule(rules).apply(result):
              context.log.info('Fetch skip: %r', result.url)
              return
  
          if not result.ok:
              err = (result.url, result.status_code)
              context.emit_warning("Fetch fail [%s]: HTTP %s" % err)
              if not context.params.get('emit_errors', False):
                  return
          else:
              context.log.info("Fetched [%s]: %r",
                               result.status_code,
                               result.url)
  
          data.update(result.serialize())
          if url != result.url:
              tag = make_key(context.run_id, url)
              context.set_tag(tag, None)
          context.emit(data=data)
      except RequestException as ce:
          retries = int(context.get('retry', 3))
          if retries >= attempt:
              context.log.warn("Retry: %s (error: %s)", url, ce)
              data['retry_attempt'] = attempt + 1
              context.recurse(data=data, delay=2 ** attempt)
          else:
              context.emit_warning("Fetch fail [%s]: %s" % (url, ce))
docs: Do an HTTP GET on the ``url`` specified in the inbound data.