В Python для выполнения задач через определенные интервалы времени, например, при разработке Telegram ботов, часто используется библиотека aioschedule.
К сожалению, пакет aioschedule не обновлялся уже несколько лет и потерял совместимость с последними версиями Python. При использовании в Python 3.11 в момент выполнения задачи выбрасывается ошибка
Варианты решения
1. Перейти на другой шедулер — пакет, позволяющий выполнять операции в нужные интервалы времени.
В качестве альтернативы можно использовать, например, пакет apscheduler.
2. Внести изменения в вашу локальную копию пакета aioschedule.
Найдите на вашем локальном компьютере куда установлен пакет aioschedule. Это может быть общая директория site-packages с пакетами для всех пользователей операционной системы, или же директория site-packages в локальном виртуальном окружении конкретного проекта, в котором используется aioschedule.
В поддиректории aioschedule откройте для редактирования файл __init__.py
В строке 107 замените
1 |
jobs = [job.run() for job in self.jobs if job.should_run] |
на
1 |
jobs = [asyncio.create_task(job.run()) for job in self.jobs if job.should_run] |
и сохраните внесенные изменения.
Теперь задачи aioschedule в вашем проекте будут выполняться корректно и ошибка «Passing coroutines is forbidden, use tasks explicitly.» не будет появляться.