简体   繁体   English

从异步函数返回列表

[英]Return a list from asyncio function

I have the following code from below. 我从下面有以下代码。 I know that probably is wrong somewhere, but how it must be to can return the list telegramlist after it is run? 我知道在某处可能是错误的,但是在运行后可以返回列表电报列表必须怎么办? Just want to can access list items globally? 只想可以全局访问列表项?

telegramlist = []
telegramchannellist = ['TelethonChat-anti-kyle']


async def telegram_method():
    api_id = '*'
    api_hash = '*'

    client = TelegramClient('trendingsesion', api_id, api_hash)
    client.start()

    telegramdict = {}
    for ch in telegramchannellist:
        channel_username = ch
        channel_entity = client.get_entity(channel_username)
        posts = client(GetHistoryRequest(
            peer=channel_entity,
            limit=1,
            offset_date=None,
            offset_id=0,
            max_id=0,
            min_id=0,
            add_offset=0,
            hash=0))
        telegramdict[ch] = posts.messages # here if i write .messages shows a weird error, he want to be only posts
    telegramlist = list(telegramdict.values())
    return telegramlist

shuffle(telegramchannellist)
if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    telegramlistt = loop.run_until_complete(asyncio.gather(telegram_method()))
    loop.close()

You are missing an await in your main coroutine. 您在main协程中缺少await Corrected, it would look like this: 已更正,它看起来像这样:

async def main():
    telegramlist = await telegram_method()
    return telegramlist

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM