从异步函数返回列表

时间:2019-01-25 10:48:34

标签: python function asynchronous python-asyncio

我有下面的代码。 我知道在某处可能是错误的,但是在运行后可以返回列表电报列表必须怎么办? 只想可以全局访问列表项?

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()

1 个答案:

答案 0 :(得分:0)

您的await协程中缺少一个main。已更正,看起来像这样:

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