运行 for 循环中的多个异步任务

Running multiple async tasks in a for loop

我有两个列表:查询和 search_engines。我想获取每个查询并 运行 在其相应的搜索引擎上进行搜索。但是,我想同时执行此操作以节省一些时间。我对异步编程完全陌生,这是我的尝试。我不断收到“RuntimeError:无法从 运行ning 事件循环调用 asyncio.run()”错误。

import asyncio
import time


queries = ['messi', 'ronaldo', 'iniesta', 'xavi', 'ramos']
engines = ['Google', 'Google', 'Bing', 'Duckduckgo', 'Google']
async def get_queries():
    for query, engine in zip(queries, engines):
        if engine == 'Google':
            gtask = asyncio.create_task((google_search.get_domain_description(query)))
            await asyncio.sleep(2)
        if engine == 'Bing':
            btask = asyncio.create_task(print(bing_search.get_domain_description(query)))
            await asyncio.sleep(2)
        if engine == 'Duckduckgo':
            dtask = asyncio.create_task(print(duckduckgo_search.get_domain_description(query)))
            await asyncio.sleep(2)

                                        
asyncio.run(get_queries())
import asyncio

SEARCH_ENGINES = {
    'Google': google_search,
    'Bing': bing_search,
    'Duckduckgo': duckduckgo_search
}

async def get_query(engine, query):
    await SEARCH_ENGINES[engine].get_domain_description(query)

async def main():
    queries = ['messi', 'ronaldo', 'iniesta', 'xavi', 'ramos']
    engines = ['Google', 'Google', 'Bing', 'Duckduckgo', 'Google']
    await asyncio.gather(
        *[get_query(engine, query) for query, engine in zip(queries, engines)])

asyncio.run(main())