await asyncio.create_task(scheduler())
Ты ждешь, пока scheduler() не закончит работу. Зачем? Вызов create_task() сам по себе планирует выполнение переданной корутины, её не имеет смысла awaitить - разве что только в плане "дождаться конца задачи".
Оставь просто вызов create_task(), без await, ну или сохрани возвращаемое create_task() значение в переменную (если нужно будет потом прервать выполнение scheduler()).