async def METHOD_NAME(
    self,
    band: BandType,
    session_id: str,
    subtask_ids: List[str],
    subtask_resources: List[Resource],
) -> List[str]:
    if (
        not self._band_total_resources or band not in self._band_total_resources
    ):  # pragma: no cover
        await self.refresh_bands()
    idx = 0
    # only ready bands will pass
    if band in self._band_total_resources:
        total_resource = self._band_total_resources[band]
        for stid, subtask_resource in zip(subtask_ids, subtask_resources):
            band_used_resource = self._band_used_resources[band]
            if band_used_resource + subtask_resource > total_resource:
                break
            self._band_stid_resources[band][(session_id, stid)] = subtask_resource
            self._update_band_usage(band, subtask_resource)
            idx += 1
    if idx == 0:
        logger.debug(
            "No resources available, status: %r, request: %r",
            self._band_used_resources,
            subtask_resources,
        )
    return subtask_ids[:idx]