5.1 KiB
5.1 KiB
API模块更新说明
更新内容
根据 fastapi_app/api.py(最新版)更新了 fastapi_app/app/api.py,主要更新包括:
1. 添加失败重试机制
所有API函数都已添加重试机制,参考 entry_data_list 的实现模式:
- 默认重试次数:20次(部分函数为10次)
- 重试逻辑:
- 捕获
requests.exceptions.RequestException异常 - 重试前等待时间:0.1秒(快速请求)或3-10秒(慢速请求)
- 超过最大重试次数后记录错误日志并返回None或抛出异常
- 捕获
2. 新增功能函数
添加了以下新函数(原版本中没有的):
entry_data_banch_update()- 批量修改数据entry_data_delete()- 删除单条数据entry_data_batch_delete()- 批量删除数据workflow_task_hand_over()- 流程待办转交get_upload_token()- 获取文件上传凭证upload_file()- 上传文件
3. 功能增强
-
entry_data_get():- 添加
replace参数(默认True,保持向后兼容) - 添加
max_retries参数 - 添加重试机制
- 添加
-
entry_data_list():- 添加
replace参数(默认True,保持向后兼容) - 添加
max_retries参数 - 改进重试逻辑,支持分页重试
- 添加
-
entry_widget_list():- 添加
max_retries参数 - 添加重试机制
- 添加
-
data_batch_create():- 添加
max_retries参数 - 添加重试机制
- 支持
is_start_workflow、is_start_trigger、transaction_id参数
- 添加
-
entry_data_batch_create():- 添加
max_retries参数 - 添加重试机制
- 支持
is_start_workflow、is_start_trigger参数 - 使用
NpEncoder处理NumPy数据类型
- 添加
-
entry_data_update():- 添加
max_retries参数 - 添加重试机制
- 添加
-
workflow_instance_get():- 添加
max_retries参数 - 添加重试机制
- 添加
-
workflow_task_approve():- 添加
max_retries参数 - 添加重试机制
comment参数支持自定义(默认"自动转交")
- 添加
4. 工具函数
NpEncoder:JSON编码器,处理NumPy数据类型replace_decimals():递归替换Decimal类型为float
5. 字段替换优化
field_replacement() 方法使用递归实现,更优雅地处理嵌套数据结构。
兼容性保证
向后兼容
-
默认参数:
entry_data_get()和entry_data_list()的replace参数默认为True,保持原有行为- 所有新增的
max_retries参数都有合理的默认值
-
导入路径:
- 使用
from app.config import Config(而非from config import Config) - 使用
logging.getLogger('app')(而非log_config)
- 使用
-
函数签名:
- 所有原有函数的调用方式保持不变
- 新增参数都是可选参数
日志系统
- 使用
logging.getLogger('app')作为常规日志记录器 - 使用
logging.getLogger('app.error')作为错误日志记录器 - 与 fastapi_app 项目的日志系统完全兼容
使用示例
基本使用(保持原有方式)
from app.api import API
api = API()
# 获取单条数据(自动替换字段)
data = api.entry_data_get({
'api_key': 'xxx',
'entry_id': 'xxx',
'data_id': 'xxx'
})
# 获取多条数据(自动替换字段)
data_list = api.entry_data_list({
'api_key': 'xxx',
'entry_id': 'xxx'
})
使用新功能
# 不替换字段
data = api.entry_data_get({
'api_key': 'xxx',
'entry_id': 'xxx',
'data_id': 'xxx'
}, replace=False)
# 自定义重试次数
data = api.entry_data_get({
'api_key': 'xxx',
'entry_id': 'xxx',
'data_id': 'xxx'
}, max_retries=10)
# 批量删除
result = api.entry_data_batch_delete({
'api_key': 'xxx',
'entry_id': 'xxx',
'data_ids': ['id1', 'id2', 'id3']
}, chunk_size=90, max_retries=20)
重试机制说明
重试策略
-
快速请求(0.1秒延迟):
entry_data_list()- 分页请求entry_data_batch_create()- 批量创建entry_data_batch_delete()- 批量删除workflow_instance_get()- 流程查询
-
慢速请求(3-10秒延迟):
data_batch_create()- 3秒延迟entry_data_update()- 10秒延迟entry_data_banch_update()- 10秒延迟entry_data_delete()- 10秒延迟workflow_task_approve()- 3秒延迟workflow_task_hand_over()- 3秒延迟get_upload_token()- 3秒延迟upload_file()- 3秒延迟
错误处理
- 所有重试失败的操作都会记录到错误日志
- 部分函数在重试失败后返回
None,部分会抛出异常 - 错误日志包含失败的任务标识信息
注意事项
- 超时设置:所有请求都设置了
timeout=10秒 - 状态码检查:使用
res.raise_for_status()检查HTTP状态码 - 文件上传:
upload_file()使用with语句确保文件正确关闭 - 数据类型处理:批量操作函数使用
NpEncoder和replace_decimals()处理特殊数据类型
测试建议
- 测试所有原有功能的兼容性
- 测试新添加的函数
- 测试重试机制(可以模拟网络错误)
- 测试
replace=False参数的使用