我使用Azure Fluent API Azure Management Libraries for .NET来扩展Azure弹性池中的DTU,并想知道是否有可能触发更新必须等待处理完成。
目前,以下代码块将等待弹性池完成扩展,然后才能继续执行。使用大型优质弹性池可能意味着此生产线最多需要90分钟才能完成。
layout_obj = g.layout()
x, y = np.array(layout_obj.coords).T
还有一个ElasticPool
.Update()
.WithDtu(1000)
.Apply();
方法,我可以故意不ApplyAsync()
允许程序继续执行,如果采用这种方法,程序将在调用此行后不久结束执行我不确定这个图书馆是否已经设计成以这种方式运作。
有没有人知道更好的解决方案来触发更新而无需等待响应?或者,如果在不等待响应的情况下触发异步方法是安全的吗?
答案 0 :(得分:1)
目前无法点火并忘记Fluent SDK中的调用以获取更新方案,但我们正在寻找未来启用手动状态轮询的方法。一种选择是创建一个等待完成的线程。另一个是使用Inner getter并进行低级BeginCreateOrUpdateAsync / BeginUpdateAsync方法调用,然后进行手动轮询。
另一方面,如果您需要进行多次调用然后等待所有调用完成,您可以使用Task.WaitAll(...)并提供ApplyAsync任务列表。
如果您遇到任何错误,请在repo中记录问题,因为这样您就可以跟踪修复的进度。
编辑:FYI呼叫阻止不是因为SDK正在等待来自Azure的响应,但SDK等待呼叫完成,更新操作完成并且资源已准备好用于进一步操作。如果在您的情况下弹性池仍在更新过程中,只是触发更新然后尝试使用资源将导致错误响应。