Как запустить асинхронную функцию с помощью библиотеки расписаний? ⇐ Python
Как запустить асинхронную функцию с помощью библиотеки расписаний?
Я пишу бота для Discord, используя перезапись discord.py, и хочу запускать функцию каждый день в определенное время. У меня вообще нет опыта работы с асинхронными функциями, и я не могу понять, как запустить их без использования «await». Это всего лишь часть моего кода, поэтому некоторые вещи могут быть не определены.
async def send_channel(): пытаться: await active_channel.send('ежедневное сообщение здесь') кроме Исключения: active_channel_id = Нет активный_канал = Нет асинхронный таймер определения(): пока правда: расписание.run_pending() ожидайте asyncio.sleep(3) Schedule.every().day.at("21:57").do(ожидание send_channel()) @bot.event асинхронная защита on_ready(): print("Вошёл как") печать(bot.user.name) печать(bot.user.id) Распечатать("------") bot.loop.create_task(таймер()) Используя функцию schedule.every().day.at("00:00").do(), я получаю эту ошибку, когда помещаю await send_channel() в параметрах .do():
self.job_func = functools.partial(job_func, *args, **kwargs) TypeError: первый аргумент должен быть вызываемым
Но когда я не использую await и у меня в качестве параметров есть только send_channel(), я получаю следующую ошибку:
RuntimeWarning: сопрограмма send_channel никогда не ожидалась
Я не очень хорош в программировании, поэтому, если бы кто-нибудь мог попытаться объяснить мне это, это было бы здорово.
Спасибо
Я пишу бота для Discord, используя перезапись discord.py, и хочу запускать функцию каждый день в определенное время. У меня вообще нет опыта работы с асинхронными функциями, и я не могу понять, как запустить их без использования «await». Это всего лишь часть моего кода, поэтому некоторые вещи могут быть не определены.
async def send_channel(): пытаться: await active_channel.send('ежедневное сообщение здесь') кроме Исключения: active_channel_id = Нет активный_канал = Нет асинхронный таймер определения(): пока правда: расписание.run_pending() ожидайте asyncio.sleep(3) Schedule.every().day.at("21:57").do(ожидание send_channel()) @bot.event асинхронная защита on_ready(): print("Вошёл как") печать(bot.user.name) печать(bot.user.id) Распечатать("------") bot.loop.create_task(таймер()) Используя функцию schedule.every().day.at("00:00").do(), я получаю эту ошибку, когда помещаю await send_channel() в параметрах .do():
self.job_func = functools.partial(job_func, *args, **kwargs) TypeError: первый аргумент должен быть вызываемым
Но когда я не использую await и у меня в качестве параметров есть только send_channel(), я получаю следующую ошибку:
RuntimeWarning: сопрограмма send_channel никогда не ожидалась
Я не очень хорош в программировании, поэтому, если бы кто-нибудь мог попытаться объяснить мне это, это было бы здорово.
Спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Запустите асинхронную функцию из функции синхронизации в Python [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-