我有一个运行时间很长的天蓝色函数应用程序。我想通过 HTTP 触发它(为简单起见),有一些输入但没有输出。我不想在作业运行的整个过程中保持 HTTP 连接打开。
我有哪些选择来构建一个函数应用程序,其中运行时接受一些数据,然后在调用我的 run.csx 文件之前立即将控制权返回给调用者?
最佳答案
我建议您的 http 函数接受 + 验证工作请求并将消息排入工作队列的设计 排队另一个功能正在监听。因此,您将从 http 触发器模板开始,并添加一个队列输出绑定(bind)。
这样您的请求会立即返回,并且您可以在 Queue 触发函数的上下文中完成长时间运行的工作。一个好处是您将获得 重试行为免费的队列触发器。例如。如果您长时间运行的任务中途失败,则消息将在一段时间后重新处理(队列消息只有在成功处理后才会从队列中删除)。
分离还为您在 future 如何安排工作提供了更多选择。例如。将来可以通过另一个函数的队列输出来启动这项工作,而无需 http 请求。
关于azure-functions - 我可以在天蓝色函数中实现异步 "fire and forget"HTTP 触发器吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123887/