При попытке запустить AsyncIOScheduler() он отказывается работать с await
Хочу вызвать await метод в AsyncIOScheduler, но он отказывается с ним работать из-за этого.
import pyrogram, tgcrypto
from data.config import * # SESSION_PATH, API_ID, API_HASH, HELP_TEXT и owner_id находятся здесь
from apscheduler.schedulers.asyncio import AsyncIOScheduler
apikey_number = 0
app = pyrogram.Client(SESSION_PATH, API_ID, API_HASH)
@app.on_message(pyrogram.filters.command(['help']) & pyrogram.filters.user(owner_id))
async def send_help(client, message):
await app.send_message(message.from_user.id, HELP_TEXT)
async def job():
dialogs = await app.get_dialogs()
for dialog in dialogs:
if dialog.unread_mark:
print("unread")
def main():
scheduler.start()
app.run() # имеет методы, которые работают отдельно
if __name__ == '__main__':
scheduler = AsyncIOScheduler()
scheduler.add_job(job, "interval", seconds=60)
main()
Выводит вот такой результат:
Job "job (trigger: interval[0:01:00], next run at: 2024-03-23 11:45:13 +05)" raised an exception
Traceback (most recent call last):
File "/home/re/.local/lib/python3.10/site-packages/apscheduler/executors/base_py3.py", line 30, in run_coroutine_job
retval = await job.func(*job.args, **job.kwargs)
File "/home/re/Desktop/App_catalog/example.py", line 13, in job
dialogs = await app.get_dialogs()
TypeError: object async_generator can't be used in 'await' expression
Прошу, пожалуйста, помочь с решением. Если возможно, то объяснить в чем заключается проблема.
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
dialogs = await app.get_dialogs()
for dialog in dialogs:
...
Судя по документации, там должно быть по-другому:
async for dialog in app.get_dialogs():
...
Там не асинхронный метод, а асинхронный итератор, его через async for
нужно вызывать.