@gen.engine
  def _RepairEmptyViewpoint(self, viewpoint, followers, callback):
    for follower in followers:
      sort_key = Followed.CreateSortKey(viewpoint.viewpoint_id, viewpoint.last_updated or 0)
      followed = yield gen.Task(Followed.Query, self._client, follower.user_id, sort_key, None, must_exist=False)

      # Delete the followed object if it exists.
      if followed is not None:
        yield gen.Task(followed.Delete, self._client)
        logging.warning('  deleted followed: %s', str((followed.user_id, followed.sort_key)))

      # Delete the follower object if it exists.
      if follower is not None:
        yield gen.Task(follower.Delete, self._client)
        logging.warning('  deleted follower: %s', str((follower.user_id, viewpoint.viewpoint_id)))

    # Delete the viewpoint object.
    yield gen.Task(viewpoint.Delete, self._client)
    logging.warning('  deleted viewpoint: %s', viewpoint.viewpoint_id)

    callback()
Return estimated work area for batched FFT.
dataset/ETHPy150Open viewfinderco/viewfinder/backend/db/tools/dbchk.py/DatabaseChecker._RepairEmptyViewpoint--crossover with--dataset/ETHPy150Open lebedov/scikit-cuda/skcuda/cufft.py/cufftEstimateMany