Azure Function App - Python - 无需重新初始化的单一连接
Azure Function App - Python - Single connection without re-initializing
我正在使用由服务总线队列触发的 Python 函数应用程序将数据存储在 SQL 服务器中。我需要处理与 SQL 服务器的连接。
我找到了这个 。具体来说,人们经常在 main 函数之外发起一个连接,然后在 main 函数中使用它。按照文档,可以重新使用连接。但问题是:Microsoft 教程仅使用 C# 和 JavaScript.
制作
我尝试了下面的示例源代码,它运行良好,但我不知道函数应用程序是否会创建新连接。
import azure.functions as func
connection = getConnection()
def main(msg: func.ServiceBusMessage):
# get content of message
mess = msg.get_body().decode("utf-8")
logging.info(mess)
message = eval(str(mess)) # Sensitive
# handle scenarios
data = handle_message_from_device(message)
insert(connection, data)
我想问:
- 有了上面的源码,Function App是不是可以重用连接或者新建连接?如果重新使用该连接,Function App 是否可以一直保持该连接?
- Python 函数应用程序如何重用此连接?目前,我认为当一个新消息被推送到Function App时,主文件(默认情况下是init文件)将被调用。那么在这种情况下,应该改为调用一条新消息吗?
提前致谢:-)
是的,这应该可以正常工作。 connection = GetConnection()
在函数(冷)启动时仅被调用一次。从那里开始它停留 "warm" 大约 5 分钟。如果另一个请求进入 - 到函数的同一个实例 - 它将被重用。超时后,您的函数将被回收。在下次调用时,它会再次启动并创建另一个连接对象。
您可以通过向 GetConnection()
方法添加一些日志记录来简单地测试它。你会看到这只会在第一次启动时执行。对于接下来的几个 seconds/minutes 中的后续请求,它不会被再次调用。当然,除非您的函数扩展到其他实例。
我正在使用由服务总线队列触发的 Python 函数应用程序将数据存储在 SQL 服务器中。我需要处理与 SQL 服务器的连接。
我找到了这个
我尝试了下面的示例源代码,它运行良好,但我不知道函数应用程序是否会创建新连接。
import azure.functions as func
connection = getConnection()
def main(msg: func.ServiceBusMessage):
# get content of message
mess = msg.get_body().decode("utf-8")
logging.info(mess)
message = eval(str(mess)) # Sensitive
# handle scenarios
data = handle_message_from_device(message)
insert(connection, data)
我想问:
- 有了上面的源码,Function App是不是可以重用连接或者新建连接?如果重新使用该连接,Function App 是否可以一直保持该连接?
- Python 函数应用程序如何重用此连接?目前,我认为当一个新消息被推送到Function App时,主文件(默认情况下是init文件)将被调用。那么在这种情况下,应该改为调用一条新消息吗?
提前致谢:-)
是的,这应该可以正常工作。 connection = GetConnection()
在函数(冷)启动时仅被调用一次。从那里开始它停留 "warm" 大约 5 分钟。如果另一个请求进入 - 到函数的同一个实例 - 它将被重用。超时后,您的函数将被回收。在下次调用时,它会再次启动并创建另一个连接对象。
您可以通过向 GetConnection()
方法添加一些日志记录来简单地测试它。你会看到这只会在第一次启动时执行。对于接下来的几个 seconds/minutes 中的后续请求,它不会被再次调用。当然,除非您的函数扩展到其他实例。