docs: def process_bucket_iterator(bid, prefix="", delimiter="", **continuation):
      """Bucket pagination
      """
      log.info("Iterating keys bucket %s prefix %s delimiter %s",
               bid, prefix, delimiter)
  
      account, bucket = bid.split(':', 1)
      region = connection.hget('bucket-regions', bid)
      versioned = bool(int(connection.hget('bucket-versions', bid)))
      session = get_session(
          json.loads(connection.hget('bucket-accounts', account)))
      s3 = session.client('s3', region_name=region, config=s3config)
  
      (contents_key, contents_method, _) = BUCKET_OBJ_DESC[versioned]
  
      params = dict(Bucket=bucket)
      if prefix:
          params['Prefix'] = prefix
      if delimiter:
          params['Delimiter'] = delimiter
      if continuation:
          params.update({k[4:]: v for k, v in continuation.items()})
      paginator = s3.get_paginator(contents_method).paginate(**params)
      with bucket_ops(bid, 'page'):
          ptime = time.time()
          pcounter = 0
          for page in paginator:
              page = page_strip(page, versioned)
              pcounter += 1
              if page:
                  invoke(process_keyset, bid, page)
  
              if pcounter % 10 == 0:
                  with connection.pipeline() as p:
                      nptime = time.time()
                      p.hincrby('bucket-pages', bid, 1)
                      p.hincrby('bucket-pages-time', bid, int(nptime - ptime))
                      ptime = nptime
                      p.execute()
  
          if pcounter % 10:
              with connection.pipeline() as p:
                  nptime = time.time()
                  p.hincrby('bucket-pages', bid, 1)
                  p.hincrby('bucket-pages-time', bid, int(nptime - ptime))
                  p.execute()