При попытке запустить 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 нужно вызывать.

→ Ссылка