async def METHOD_NAME(self, process_callable):
    while True:
        batch = []
        rest = self.queue.qsize()
        for _ in range(min(self.batch_size, rest)):
            item = await self.queue.get()
            batch.append(item)
        if batch:
            model_payload = self.glue_tasks(batch)
            async with self.session.post(self.url, json=model_payload) as resp:
                response = await resp.json()
            for task, task_response in zip(batch, response):
                asyncio.create_task(process_callable(task_id=task["task_id"], response=task_response))
        await asyncio.sleep(0.1)