Вернуть список из функции asyncio - PullRequest
0 голосов
/ 25 января 2019

У меня есть следующий код снизу.Я знаю, что, вероятно, где-то не так, но как это должно быть, чтобы вернуть список телеграмм после его запуска?Просто хотите получить доступ к элементам списка по всему миру?

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 голосов
/ 25 января 2019

Вам не хватает await в вашей main сопрограмме. Исправлено, это будет выглядеть так:

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