Azure Functions 2.x 的 host.json 参考

host.json 元数据文件包含对函数应用的所有函数产生影响的全局配置选项。 本文列出了可用于 v2 运行时的设置。

Note

本文适用于 Azure Functions 2.x。 有关 Functions 1.x 中 host.json 的参考,请参阅 Azure Functions 1.x 的 host.json 参考

其他函数应用配置选项在应用设置中进行管理。

local.settings.json 文件中的某些 host.json 设置仅在本地运行时才使用。

示例 host.json 文件

以下示例 host.json 文件指定了所有可能的选项。

{
    "version": "2.0",
    "extensions": {
        "cosmosDb": {},
        "durableTask": {},
        "eventHubs": {},
        "http": {},
        "queues": {},
        "sendGrid": {},
        "serviceBus": {}
    },
    "functions": [ "QueueProcessor", "GitHubWebHook" ],
    "functionTimeout": "00:05:00",
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    },
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    },
    "watchDirectories": [ "Shared", "Test" ]
}

本文的以下各部分解释了每个顶级属性。 除非另有说明,否则其中的所有属性都是可选的。

CosmosDB

可在 Cosmos DB 触发器和绑定中查找配置设置。

durableTask

可在 Durable Functions 的绑定中查找配置设置。

eventHub

可在事件中心触发器和绑定中查找配置设置。

扩展

返回包含所有特定于绑定的设置的对象的属性,例如 httpeventHub

functions

作业主机运行的函数列表。 空数组表示运行所有函数。 仅供在本地运行时使用。 在 Azure 的函数应用中,应改为按照如何在 Azure Functions 中禁用函数中的步骤禁用特定函数,而不是使用此设置。

{
    "functions": [ "QueueProcessor", "GitHubWebHook" ]
}

functionTimeout

指示所有函数的超时持续时间。 在应用服务计划中,没有总体限制,默认值取决于运行时版本。 在版本 2.x 中,应用服务计划的默认值为 30 分钟。 在版本 1.x 中,它为 null,表示无超时。

{
    "functionTimeout": "00:05:00"
}

healthMonitor

主机运行状况监视器的配置设置。

{
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    }
}
属性 默认 说明
Enabled 指定是否已启用该功能。
healthCheckInterval 10 秒 定期后台运行状况检查之间的时间间隔。
healthCheckWindow 2 分钟 healthCheckThreshold 设置结合使用的滑动时间窗口。
healthCheckThreshold 6 在启动主机回收之前,运行状况检查可以失败的最大次数。
counterThreshold 0.80 性能计数器将被视为不正常的阈值。

http

可在 http 触发器和绑定中查找配置设置。

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
属性 默认 说明
routePrefix api 应用到所有路由的路由前缀。 使用空字符串可删除默认前缀。
maxOutstandingRequests 200* 在任意给定时间搁置的未完成请求数上限。 此限制包括已排队但尚未开始执行的请求,以及正在执行的所有请求。 超出此限制的任何传入请求将被拒绝,并返回 429“太忙”响应。 允许调用方使用基于时间的重试策略,还可帮助控制最大请求延迟。 此设置仅控制脚本宿主执行路径中发生的排队。 其他队列(例如 ASP.NET 请求队列)仍有效,不受此设置的影响。 *版本 1.x 的默认值是无限制的。 专用计划中版本 2.x 的默认值是无限制的。
maxConcurrentRequests 100* 要并行执行的 http 函数数目上限。 这样,可以控制并发性,从而帮助管理资源利用率。 例如,某个 http 函数可能使用了大量系统资源(内存/CPU/插槽),从而在并发性过高时导致问题。 或者,某个函数向第三方服务发出出站请求,则可能需要限制这些调用的速率。 在这种情况下,应用限制可能有帮助。 *版本 1.x 的默认值是无限制的。 专用计划中版本 2.x 的默认值是无限制的。
dynamicThrottlesEnabled true* 启用时,将为此设置将导致请求处理管道,以定期检查系统性能计数器类似连接/线程/进程/内存/CPU 等,并通过内置的高阈值 (80%),如果有任何这些计数器请求拒绝与 429“太忙”响应,直至恢复到正常水平的计数器。 *版本 1.x 的默认值是 false。 专用计划中版本 2.x 的默认值为 false。

queues

可在存储队列触发器和绑定中查找设置。

SendGrid

可在 SendGrid 触发器和绑定中查找配置设置。

serviceBus

可在服务总线触发器和绑定中查找配置设置。

singleton

单一实例锁行为的配置设置。 有关详细信息,请参阅有关单一实例支持的 GitHub 问题

{
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    }
}
属性 默认 说明
lockPeriod 00:00:15 占用函数级锁的时间段。 锁自动续订。
listenerLockPeriod 00:01:00 占用侦听器锁的时间段。
listenerLockRecoveryPollingInterval 00:01:00 在启动时无法获取侦听器锁的情况下,用于恢复侦听器锁的时间间隔。
lockAcquisitionTimeout 00:01:00 运行时尝试获取锁的最长时间。
lockAcquisitionPollingInterval 不适用 尝试获取锁的间隔时间。

版本

针对 v2 运行时的函数应用需要版本字符串 "version": "2.0"

watchDirectories

应该监视其更改情况的一组共享代码目录。 确保当这些目录中的代码发生更改时,函数会拾取这些更改。

{
    "watchDirectories": [ "Shared" ]
}

后续步骤