azure-devops - 使用部署槽部署 Azure Functions 时如何避免主机重启?
问题描述
我将管道配置为对 Azure Functions 进行零停机时间部署。为此,我有以下步骤:
- 创建槽
- 部署到插槽
- 开始交换预览
- 完全交换
我对这个过程的理解是,所有重新启动都应该只发生在预览槽上(所以只有 JobHost 应该重新启动),这应该在最终交换之前占有一席之地。但是,我在 Application Insight 上注意到,当我点击函数时,Hosting stopped
这会导致代码出现问题。503
有没有办法避免这种情况?我不确定这是否重要,但我使用高级计划。
解决方案
您无法避免重新启动,但如果您的功能需要,您可以使用自定义预热。
交换操作在与目标交换交换之前等待预热完成。您可以在一个web.config
文件中配置它,示例如下:
<system.webServer>
<applicationInitialization>
<add initializationPage="/" hostName="[app hostname]" />
<add initializationPage="/Home/About" hostName="[app hostname]" />
</applicationInitialization>
</system.webServer>
您还可以使用以下一项或两项应用程序设置自定义预热行为:
- WEBSITE_SWAP_WARMUP_PING_PATH:用于预热站点的 ping 路径。通过指定以斜杠开头的自定义路径作为值来添加此应用程序设置。/statuscheck 就是一个例子。默认值为 /。
- WEBSITE_SWAP_WARMUP_PING_STATUSES:预热操作的有效 HTTP 响应代码。使用逗号分隔的 HTTP 代码列表添加此应用设置。一个例子是 200,202 。如果返回的状态码不在列表中,则停止预热和交换操作。默认情况下,所有响应代码都有效。
推荐阅读
- c - 返回地址函数导致问题
- python - 将python应用程序部署到heroku,在gunicorn配置中苦苦挣扎
- html - 如何将输入类型值显示为加密?可以使用angular js来实现吗?
- python-3.x - 未按数字排序时如何获取网站链接
- html - 如何使用 Jquery 和 CSS 在兄弟 div 上打开 div
- excel - 有没有更好的方法来做到这一点(Excel)
- flutter - 带有 navigatorKey 和密钥的 Flutter MaterialApp 未重新启动
- javascript - 用vue上传多个动态文件
- node.js - 在开始 mocha 测试之前确保 express 应用程序正在运行
- rust - Rust - 嵌套循环只在内循环内执行一次