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

本地部署的Appwrite Dart函数执行超时问题求助

问题

本地部署Dart 2.17版本的Appwrite函数,使用appwrite init function创建后直接部署执行正常,但添加包含团队创建、数据库及集合配置的业务代码后,执行始终返回超时错误(添加try/catch无效)。

相关信息

配置详情

  1. 函数控制台.env配置:
APPWRITE_FUNCTION_ENDPOINT=http://localhost/v1
APPWRITE_FUNCTION_API_KEY=%MyKey%
  1. 业务代码路径:functions/Create Company/lib/main.dart(含团队创建、数据库及集合配置完整逻辑)
  2. 依赖配置路径:functions/Create Company/lib/pubspec.yaml
  3. 项目及函数配置路径:appwrite.json

错误现象

执行时控制台Response和Logs标签页为空,Errors标签页显示:

An internal curl error has occurred within the executor! Error Msg: Operation timed out

docker logs appwrite-executor末尾日志同样出现上述curl超时错误。

解决步骤

1. 修正Appwrite端点地址

本地Docker环境中,函数容器无法通过localhost访问Appwrite主服务,需替换为Docker内部服务名称。将.env中的APPWRITE_FUNCTION_ENDPOINT修改为:

APPWRITE_FUNCTION_ENDPOINT=http://appwrite/v1

(若自定义过Docker Compose中的Appwrite服务名,替换为对应名称)

2. 优化业务代码逻辑

  • 排查是否存在长时间阻塞的操作(如批量创建资源的循环),拆分任务或添加合理的异步超时控制
  • 确保所有异步调用都通过await等待完成,避免后台未完成的操作导致超时

3. 调整函数执行超时阈值

在Appwrite控制台的函数设置中,找到「执行超时」选项,默认值可能为15秒,根据业务复杂度适当调高(如30秒或60秒)

4. 验证容器网络连通性

进入函数执行容器,测试与Appwrite主服务的连通性:

# 获取函数执行容器ID
docker ps | grep appwrite-executor
# 进入容器
docker exec -it <容器ID> /bin/bash
# 发起健康检查请求
curl http://appwrite/v1/health

若请求失败,检查Docker网络配置,确保函数容器与Appwrite主服务处于同一个Docker网络(默认网络名为appwrite)

5. 确认API密钥权限

检查APPWRITE_FUNCTION_API_KEY的权限范围,确保覆盖业务代码中所有操作(如团队创建、数据库/集合读写),避免因权限不足导致请求挂起超时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:20:23