调用如何工作
演练一次调用,解释限制、错误代码和您观察到的时间。
8分钟 读取·级别 先进的·修改于 2026年10月12日
该英文文本是根据法文原文自动生成的,尚未经过审查。
该页面已自动翻译。英文版具有权威性。
#
路径
1. 调用路径
网关和功能服务通过消息总线进行通信。该总线上的消息有大小限制,这就是为什么超过约 256 KiB 的请求或响应不会通过:请参阅 限制。
#
运行时
2.运行时内部
- 每次调用一名工作人员。 边缘运行时为每次调用启动一个新的隔离 V8 工作线程,并具有内存限制和函数超时。从一次调用到下一次调用,内存中的任何内容都不会保留:不要将状态保留在变量中。使用您的数据库或存储。
- 代码被缓存几秒钟。 运行时将代码和函数的限制保留 5 秒,并在部署时将其删除。每次调用时都会读取变量。
- 您的请求已重建。 运行时创建您描述的请求(
method、path、headers、body)并将其交给您的Deno.serve处理程序。因此,函数的行为就像任何 HTTP 服务器一样。 - 运行时强制超时。 当
timeout_secs过去后,取消该worker;调用者在大约该延迟后看到错误。 - WASM 函数 在服务本身内部运行,对内存、时间和指令有限制。 WASM 函数可以报告日志行,这些日志行出现在响应的
logs字段中; Deno 函数不能。
#
回应
3. 包络和raw模式
该服务有两种返回函数答案的方法,由 X-Aurabase-Invoke-Mode 请求标头选择。
| 信封(默认) | 原始(raw) | |
|---|---|---|
| HTTP状态 | 始终200 | 函数自身的状态 |
| 身体 | { data: { status, headers, body, logs, duration_ms }, meta } | 函数的字节数 |
| 内容 | JSON 或 UTF-8 文本 | 任何东西,包括二进制 |
| 使用者 | responseType: 'json',工作室 | 'text'、 'blob'、 'arrayBuffer'、直接 HTTP |
信封的存在使得一个 JSON 响应可以携带呼叫的状态、标头和持续时间。它的限制是字节不能在 JSON 中传输:这就是二进制响应需要原始模式的原因。 SDK 从 responseType选择模式。
在原始模式下,服务将 x-aurabase-invoke-origin: function 添加到函数的答案中。来自网关或运行时的错误不携带它。这就是 SDK 将 FunctionsHttpError(您的函数已回答)与 FunctionsRelayError(平台失败)分开的方式。
#
时间
4. 时间、计量和故障
三个超时是嵌套的,因此没有一个超时会在其中的超时之前结束:
该服务等待 timeout_secs 的运行时间加上一个裕度。由于运行时取消了 timeout_secs处的工作程序,因此您通常会在此时看到函数中的错误,并且仅当运行时本身停止应答时才会看到 504 TIMEOUT 。因此,504 意味着函数 已在 中启动,并且可能会产生影响:不要盲目地重复非幂等调用。
计量与配额:
- 在调用之前,该服务会从计划配额中保留一次调用。如果配额用完,调用将在此处停止并显示
403。 - 调用后,它会记录调用及其持续时间(以毫秒为单位)。
- 如果在您的函数应答之前调用失败,则保留将被释放并且不会被计算在内。
#
后果
5. 您的代码如下
最后更新· 2026年10月12日