我是Azure, Python和异步编程的新手。
我有一种情况,我需要做一些繁重的任务(在这种情况下,为Azure的托管磁盘创建快照)
我有这样的东西:
def create_snapshot():
for VM in list_of_virtual_machines:
snapshot = compute_client.snapshots.begin_create_or_update(VM.name, VM.location).result() # asynchronous task
# Do something with the snapshot once it is ready, in the meantime, continue creating other virtual machines' snapshots
我该如何编写这种情况下的代码,我应该选择哪种方法?线程,Asyncio等?我的问题可能不清楚和模糊,因为我对这些概念不熟悉。
任何帮助都是感激的。提前谢谢。
如何编写这种情况下的代码,我应该选择哪种方法?线程,Asyncio等?
您可以尝试下面的代码片段,取自文档:
managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')
async_snapshot_creation = self.compute_client.snapshots.begin_create_or_update(
'my_resource_group',
'mySnapshot',
{
'location': 'westus',
'creation_data': {
'create_option': 'Copy',
'source_uri': managed_disk.id
}
}
)
snapshot = async_snapshot_creation.result()
参考:snapshots_operations.py, Azure Python SDK计算客户端不使用托管磁盘参数,并使用托管磁盘扩展Python服务