我有一个运行时间很长的天蓝色函数应用程序。我想通过 HTTP 触发它(为简单起见),有一些输入但没有输出。我不想在作业运行的整个过程中保持 HTTP 连接打开。
在运行时接受一些数据并在调用我的 run.csx 文件之前立即将控制权返回给调用者的函数应用程序中,我有哪些选择?
我有一个运行时间很长的天蓝色函数应用程序。我想通过 HTTP 触发它(为简单起见),有一些输入但没有输出。我不想在作业运行的整个过程中保持 HTTP 连接打开。
在运行时接受一些数据并在调用我的 run.csx 文件之前立即将控制权返回给调用者的函数应用程序中,我有哪些选择?
我建议您的 http 函数接受 + 验证工作请求并将消息排入另一个函数正在侦听的工作队列的设计。因此,您将从 http 触发器模板开始,并添加一个队列输出绑定。
这样您的请求会立即返回,并且您可以在 Queue 触发函数的上下文中完成长时间运行的工作。一个好处是您将免费获得队列触发器的重试行为。例如,如果您的长时间运行的任务中途失败,消息将在一段时间后重新处理(队列消息只有在成功处理后才会从队列中删除)。
分离还为您在未来如何安排工作提供了更多选择。例如,将来可以通过另一个函数的队列输出来启动工作,而无需 http 请求。