我正在使用带有 Python 的 Azure 函数应用程序。我有两打功能应用程序,它们都使用 Postgres DB 和 Custom Vision。所有功能应用程序都设置为 HttpTriggers。现在,当一个函数被触发时,一个新的数据库处理程序(或自定义视觉处理程序)对象被创建、使用并在函数应用程序调用完成时终止。
在每个传入的请求上实例化一个新对象似乎会适得其反。有没有办法实例化一次共享对象,然后在调用它们时将它们传递给函数?
我正在使用带有 Python 的 Azure 函数应用程序。我有两打功能应用程序,它们都使用 Postgres DB 和 Custom Vision。所有功能应用程序都设置为 HttpTriggers。现在,当一个函数被触发时,一个新的数据库处理程序(或自定义视觉处理程序)对象被创建、使用并在函数应用程序调用完成时终止。
在每个传入的请求上实例化一个新对象似乎会适得其反。有没有办法实例化一次共享对象,然后在调用它们时将它们传递给函数?
通常,Azure Functions 旨在实现无状态,并且不会在一次调用到下一次调用之间共享对象。但是,也有一些例外。
共享连接对象
Azure Docs 建议使用不正确的实例化模式来共享旨在在应用程序中打开并反复使用的连接对象。
有一些事情要记住,这对你有用,主要是:
此反模式的关键元素是重复创建和销毁可共享对象的实例。如果一个类不可共享(不是线程安全的),则此反模式不适用。
他们在那里有一些演练可能会对您有所帮助。由于您的问题相当笼统,我能做的最好的就是建议您通读一遍,看看是否对您有帮助。
耐用的功能
另一种方法是考虑持久功能而不是标准。它们旨在能够在函数之间传递对象,从而使它们不是完全无状态的。
Durable Functions 是 Azure Functions 的高级扩展,并不适用于所有应用程序。本文假设你非常熟悉Azure Functions中的概念以及无服务器应用程序开发中涉及的挑战。