簡體   English   中英

嘗試使用帶有 azure python SDK 的異步啟動多個 ADf 觸發器,我得到 RuntimeError: got Future<future pending> 附加到不同的循環</future>

[英]Trying to start several ADf triggers using asyncio with azure python SDK, I get RuntimeError: got Future <Future pending> attached to a different loop

我正在嘗試編寫一個簡單的 python 腳本以在我的 Azure 數據工廠中啟動多個觸發器。 但是,當我嘗試使用 azure SDK 類的 aio 變體時,出現以下錯誤:

RuntimeError:任務 <Task pending name='Task-4' coro=<stop_trigger() running at /home/atlevesque/Sources/CustomDevopsScripts/trigger_pythonTests.py:37>> 將 Future 附加到不同的循環

這是我的腳本的樣子:

import asyncio
from azure.identity.aio import DefaultAzureCredential
from azure.mgmt.datafactory.aio import DataFactoryManagementClient


rg_name = "MY_RG_NAME"
adf_name = "MY_ADF_NAME"
subscription_id = "MY_SUBSCRIPTION_ID"

credentials = DefaultAzureCredential()

adf_client = DataFactoryManagementClient(credentials, subscription_id)

async def start_trigger(adf_client: DataFactoryManagementClient, trigger_name: str, resource_group_name=rg_name, factory_name=adf_name):
    print(f"Starting trigger {trigger_name}")
    await adf_client.triggers.begin_start(resource_group_name=rg_name, factory_name=adf_name, trigger_name=trigger_name)
    print(f"Trigger {trigger_name} started")

async def main(adf_client: DataFactoryManagementClient, triggers_to_start: list):
    trigger_start_tasks = [
        asyncio.create_task(start_trigger(adf_client, trigger))
        for trigger in triggers_to_start
    ]

    for trigger_task in (trigger_start_tasks):
        await trigger_task

triggers_to_start = [
    "Trigger_A",
    "Trigger_B",
]

asyncio.run(
    main(adf_client, triggers_to_start)
)

當我在開始下一個任務之前等待每個任務時,我的腳本實際上有效(但是使用 aio 沒有意義......)

在此先感謝您的幫助!

您可以嘗試以下任一方法來解決此RuntimeError: Task <Task pending name='Task-4' coro=<stop_trigger() running at /home/atlevesque/Sources/CustomDevopsScripts/trigger_pythonTests.py:37>> got Future attached to a different loop錯誤:

  1. 添加asyncio.get_event_loop().run_until_complete(main())` or `app.run(main())

  2. 添加loop = asyncio.get_event_loop() app.run(debug=1,loop=loop)

參考資料: https://github.com/pyrogram/pyrogram/issues/391RuntimeError: Task got Future <Future pending> attached to a different loop

暫無
暫無

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

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