You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署期间Function App终止:如何让运行中实例完成执行?

Azure Function App 长任务部署不中断执行的可行方案

以下是几种能让运行中的长耗时Function App在部署新代码时完成执行的方案:

  • 配置优雅关闭超时
    针对消耗计划以外的托管计划(如专用计划、弹性计划),可设置WEBSITE_SHUTDOWN_TIMEOUT应用设置,指定实例收到终止信号后等待现有任务完成的超时时间(单位为秒,最大支持900秒)。对于隔离进程模型的函数,还需配置FUNCTIONS_WORKER_RUNTIME_GRACEFUL_SHUTDOWN_TIMEOUT,控制Worker进程的优雅关闭时长。设置后,部署或槽交换时,平台会先停止向实例发送新请求,等待正在执行的任务完成后再终止实例,超时后才会强制终止。

  • 采用隔离进程运行模型
    隔离进程模型下,函数代码运行在独立于宿主进程的Worker进程中,平台对这类实例的优雅关闭支持更完善。部署或槽交换时,宿主进程会先通知Worker进程停止接收新请求,并等待Worker进程处理完现有任务(受上述超时配置控制)后再关闭,相比进程内模型更适合长运行任务场景。

  • 优化部署槽的使用策略

  1. 先预热 staging 槽的实例,确保新代码已加载并正常运行;
  2. 不直接执行完整槽交换,而是通过流量路由逐步将用户流量从生产槽切换到 staging 槽;
  3. 保留生产槽的实例直到所有长任务执行完成后,再销毁生产槽资源,避免实例被提前终止。
  • 拆分长任务到外部持久化服务
    将耗时的业务逻辑从Function App中剥离,通过Azure Queue Storage、Azure Service Bus等消息队列传递任务请求,由独立的后台服务(或另一个专门处理长任务的Function)来执行。此时部署Function App仅更新请求接收逻辑,正在运行的长任务在外部服务中不受部署影响,可自然完成执行。

  • 使用Durable Functions
    Durable Functions通过持久化机制保存任务状态,即使当前实例被终止,任务也能在新实例上恢复执行。若需当前实例完成任务而非恢复,结合优雅关闭配置,Durable Functions的长运行编排任务可在部署时完成当前执行步骤后再进行更新。

内容的提问来源于stack exchange,提问作者Asfaqur FAQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:13:25