Startup.cs相当于Python中的Azure函数/依赖项注入Python



我是一名C#开发人员,负责将一些部署的C#Azure函数(主要是webhook/SB(转换为Python。

我正在为python等价于依赖注入的概念而挣扎。

举个例子,一个api客户端类不断地调用某些第三方api来推送和拉取数据。在.NET中,如果我有一个webhook函数需要使用这个api客户端,我会在startup.cs类中启动一个singleton服务,并将其注入到我的azure webhook功能中。这是有利的,因为我可以处理令牌刷新和不在服务类本身内部的内容,并将令牌存储在内存中,而不必每次触发webhook时都重新创建api客户端类的实例。

我如何在Python中做到这一点?或者,在类似的环境(Azure功能(中做类似的事情的正确方法是什么?在这种环境中,我们将令牌存储在内存中,并创建一次服务,然后在多个功能中使用相同的服务?

感谢

  • 虽然由于python的设置方式而没有被广泛使用,但依赖项注入可以使用python实现。有一个名为dependencyinjector的python包可以帮助实现di。

  • 我们不应该将令牌存储在函数的本地内存中,因为函数是无状态和无服务器的。这意味着我们对运行函数的服务器既没有控制权,也没有知识,因此我们不知道一旦获得令牌,它们将在内存中存储多长时间,而不是将它们添加到azure keyvault中,以便您可以频繁使用它们。

  • 您可以在函数之间共享一个python类,只需将它们放在一个单独的文件夹中,然后将它们导入到您的函数中即可。


from ..common_files import test_file

请参阅Szymon miks的这篇文章,了解python 中依赖注入的示例

关于函数之间的共享文件,请参阅本文档。

有关检索密钥,请参阅以下azure keyvault文档

最新更新