簡體   English   中英

從 asyncio 返回列表 function python

[英]return a list from asyncio function python

我有這段代碼用於使用 asyncio 抓取打印機網頁:

def get_toner(url,loop):
    loop.run_in_executor(executor,scraper,url)

def scraper(url):
    
#function for scraping return % of toner

loop = asyncio.get_event_loop()

def main():
    for stampante in lista_totale:
        get_toner(stampante,loop=loop)
        
    lista_verificati.append(loop.run_until_complete(asyncio.gather(*asyncio.all_tasks(loop))))
    print (lista_verificati)

if __name__ == "__main__":
    main()

我的意圖是創建一個列表以在循環結束時使用。 但我無法打印完整列表,代碼僅在 function 啟動后立即打印空列表。

我讀過這個:

asyncio-collecting-results-from-an-async-function-in-an-executor

從異步獲取事件循環返回結果

從異步函數返回列表

我用 loop.shutdown_asyncgens() 找到了解決方案:

try:
    loop.run_until_complete(asyncio.gather(*asyncio.all_tasks(loop)))
finally:
    loop.run_until_complete(loop.shutdown_asyncgens())
    executor.shutdown(wait=True)
    loop.close()
    print (lista_verificati)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM