分页异步迭代器协议不可用(Python 的 Azure SDK)

Paging async iterator protocol is not available (Azure SDK for Python)

我想要达到的目标

我正在尝试使用 Python SDK 在 Azure 上自动创建订阅和资源组。

为此,我需要一个服务主体帐户(客户端 ID;客户端机密;租户 ID),该帐户至少有权检索注册帐户并创建订阅和资源组。


我是如何实现的

我尝试列出注册帐户但没有成功(是的,我正在导入 azure.mgmt.billingazure.mgmtazure.common 等)

  1. 首先我实例化客户端:

    billing_client = azure.mgmt.billing.BillingManagementClient(credentials, subscription_id)
    
  2. 然后我尝试以两种不同的方式打印结果:

    # A
    print(list(billing_client.enrollment_accounts.list()))
    
    # B
    for enrollment_account in billing_client.enrollment_accounts.list():
        print(enrollment_account)
    

我遇到了什么问题?

我遇到的问题是出现以下错误:

Paging async iterator protocol is not available for EnrollmentAccountPaged

其他 list() 方法也会发生这种情况,例如当我使用

之类的方法检索资源组时
rm_client = ResourceManagementClient(credentials, subscription_id)
resource_groups = rm_client.resource_groups.list()

然后,我得到错误:

Paging async iterator protocol is not available for ResourceGroupPaged


我怎么认为我的问题已经解决了?

我很想知道为什么会出现此错误,以及如何修复它。来自 Azure 的示例代码没有以不同的方式使用方法或对象。


环境怎么样?

Python版本:Python 3.7

套餐:

Package Version Latest Version
PyJWT   1.6.4   1.6.4
adal    1.1.0   1.1.0
asn1crypto  0.24.0  0.24.0
azure-common    1.1.16  1.1.16
azure-mgmt  4.0.0   4.0.0
azure-mgmt-advisor  1.0.1   1.0.1
azure-mgmt-applicationinsights  0.1.1   0.1.1
azure-mgmt-authorization    0.50.0  0.50.0
azure-mgmt-batch    5.0.1   5.0.1
azure-mgmt-batchai  2.0.0   2.0.0
azure-mgmt-billing  0.2.0   0.2.0
azure-mgmt-cdn  3.0.0   3.0.0
azure-mgmt-cognitiveservices    3.0.0   3.0.0
azure-mgmt-commerce 1.0.1   1.0.1
azure-mgmt-compute  4.3.0   4.3.0
azure-mgmt-consumption  2.0.0   2.0.0
azure-mgmt-containerinstance    1.2.0   1.2.0
azure-mgmt-containerregistry    2.2.0   2.2.0
azure-mgmt-containerservice 4.2.2   4.2.2
azure-mgmt-cosmosdb 0.4.1   0.5.0
azure-mgmt-datafactory  0.6.0   0.6.0
azure-mgmt-datalake-analytics   0.6.0   0.6.0
azure-mgmt-datalake-nspkg   2.0.0   3.0.0
azure-mgmt-datalake-store   0.5.0   0.5.0
azure-mgmt-datamigration    1.0.0   2.0.0
azure-mgmt-devspaces    0.1.0   0.1.0
azure-mgmt-devtestlabs  2.2.0   2.2.0
azure-mgmt-dns  2.1.0   2.1.0
azure-mgmt-eventgrid    1.0.0   1.0.0
azure-mgmt-eventhub 2.1.0   2.1.0
azure-mgmt-hanaonazure  0.1.1   0.2.1
azure-mgmt-iotcentral   0.1.0   0.2.0
azure-mgmt-iothub   0.5.0   0.6.0
azure-mgmt-iothubprovisioningservices   0.2.0   0.2.0
azure-mgmt-keyvault 1.1.0   1.1.0
azure-mgmt-loganalytics 0.2.0   0.2.0
azure-mgmt-logic    3.0.0   3.0.0
azure-mgmt-machinelearningcompute   0.4.1   0.4.1
azure-mgmt-managementgroups 0.1.0   0.1.0
azure-mgmt-managementpartner    0.1.0   0.1.0
azure-mgmt-maps 0.1.0   0.1.0
azure-mgmt-marketplaceordering  0.1.0   0.1.0
azure-mgmt-media    1.0.0   1.0.0
azure-mgmt-monitor  0.5.2   0.5.2
azure-mgmt-msi  0.2.0   0.2.0
azure-mgmt-network  2.2.1   2.2.1
azure-mgmt-notificationhubs 2.0.0   2.0.0
azure-mgmt-nspkg    3.0.2   3.0.2
azure-mgmt-policyinsights   0.1.0   0.1.0
azure-mgmt-powerbiembedded  2.0.0   2.0.0
azure-mgmt-rdbms    1.3.0   1.3.0
azure-mgmt-recoveryservices 0.3.0   0.3.0
azure-mgmt-recoveryservicesbackup   0.3.0   0.3.0
azure-mgmt-redis    5.0.0   5.0.0
azure-mgmt-relay    0.1.0   0.1.0
azure-mgmt-reservations 0.2.1   0.3.0
azure-mgmt-resource 2.0.0   2.0.0
azure-mgmt-scheduler    2.0.0   2.0.0
azure-mgmt-search   2.0.0   2.0.0
azure-mgmt-servicebus   0.5.2   0.5.2
azure-mgmt-servicefabric    0.2.0   0.2.0
azure-mgmt-signalr  0.1.1   0.1.1
azure-mgmt-sql  0.9.1   0.9.1
azure-mgmt-storage  2.0.0   3.0.0
azure-mgmt-subscription 0.2.0   0.2.0
azure-mgmt-trafficmanager   0.50.0  0.50.0
azure-mgmt-web  0.35.0  0.40.0
azure-nspkg 3.0.2   3.0.2
certifi 2018.8.24   2018.8.24
cffi    1.11.5  1.11.5
chardet 3.0.4   3.0.4
cryptography    2.3.1   2.3.1
idna    2.7 2.7
isodate 0.6.0   0.6.0
msrest  0.6.0   0.6.0
msrestazure 0.5.0   0.5.0
oauthlib    2.1.0   2.1.0
pip 10.0.1  18.1
pycparser   2.19    2.19
python-dateutil 2.7.3   2.7.3
requests    2.19.1  2.19.1
requests-oauthlib   1.0.0   1.0.0
setuptools  39.1.0  40.4.3

这是一个日志警告,告诉你这个包还没有准备好支持异步语法,这是真的,我们在 msrest 0.6.0 中发布了运行时的第一部分,但我们没有发布任何还支持异步的包。

作为参考,这只是一个警告: https://github.com/Azure/msrest-for-python/blob/master/msrest/async_paging.py#L40

它不会影响任何代码,也不会引发任何异常。仅当您尝试使用异步语法的 async for 时才会遇到问题(因为警告告诉您,它还没有准备好)。

当我们在今年年底开始运送异步兼容包时,随着越来越多的包准备就绪,此警告将自动消失。

如果这个警告对您来说确实是个问题,您可以禁用记录器 "msrest.async_paging" 或将 msrest 固定到 0.5.5(在异步核心支持之前)。

如果您觉得这确实是一个大问题,请随时在我们的跟踪器上提出问题,并且根据我收到不良反馈的人数,我可能会将其更改为 debug[=33= 】 几个月。但是一旦发布异步包,它将成为重要的反馈来源,我真的认为它值得 警告https://github.com/Azure/azure-sdk-for-python/issues

感谢您的反馈!

(我在 Microsoft 拥有此代码)。

编辑:由于您不是唯一对此有疑问的人,我发布了一个 0.6.1 版本来删除此警告。