Taipy REST 实战指南:将 Taipy Core 业务应用以 REST API 方式交付与自动化
【免费下载链接】taipyTurns Data and AI algorithms into production-ready web applications in no time.项目地址: https://gitcode.com/GitHub_Trending/ta/taipy
Taipy 是一个面向业务应用的 Python 库,被拆分为taipy-core、taipy-rest等多个子包,以便用户按需安装最少依赖。其中Taipy REST是基于taipy-core之上构建的一组 REST API,其核心目标是让基于 Taipy 构建的流程(场景、任务、数据节点等)能够通过标准 HTTP 接口被外部系统自动化调用与集成。本文以 taipy/rest/package_desc.md 为主干,结合仓库内taipy/rest的源码实现,完整讲解 Taipy REST 的定位、安装、配置、运行、生产部署方式以及它暴露的 API 结构,帮助你把 Taipy 应用无缝嵌入更复杂的 IT 生态。
Taipy REST 是什么
Taipy 整体上被设计为可拆分、可裁剪的多包体系,其中:
- Taipy Core主要承载面向业务的特性,帮助用户创建和管理业务应用,并通过时间、条件与假设来提升分析能力(如场景管理、数据节点、任务、序列、周期等概念);
- Taipy REST则是建立在
taipy-core之上的一组 API 集合,作为 Taipy 的补充模块,目标是通过 REST API 实现基于 Taipy 构建的流程自动化。
从 taipy/rest/init.py 的模块说明可以确认:Taipy REST 包对外暴露可运行的Rest服务,在 Taipy Core 功能(尤其是场景与数据管理)之上提供 REST API。一旦Rest服务运行,用户就可以通过 REST API 对 Taipy 实体执行创建(create)、读取(read)、更新(update)、提交(submit)和删除(remove)操作,覆盖的实体类型包括:
- 数据节点(DataNodes)
- 任务(Tasks)
- 作业(Jobs)
- 序列(Sequences)
- 场景(Scenarios)
- 周期(Cycles)
这使得 Taipy REST 非常适合用于将 Taipy 应用集成到更复杂的 IT 生态系统中,例如供外部调度系统、CI/CD 流水线或其他微服务通过 HTTP 触发 Taipy 场景运行。
仓库目录结构速览
参考 taipy/rest/README.md,taipy/rest目录的布局如下:
api/:端点(resources)与 schema 定义api/views.py:资源到 URL 的映射(蓝图注册)api/schemas/:与 Taipy 对象相关的 schema,用于数据的序列化与反序列化
commons/:全应用共享的公共文件commons/templates/:用于生成文档的 Swagger 与 ReDoc 模板
app.py:Flask 应用的配置与创建(应用工厂)extensions.py:应用工厂中使用的单例(如 apispec)rest.py:运行 taipy-rest 应用的 Python 主入口(Rest类)INSTALLATION.md:安装说明setup.py:负责构建、分发与安装 taipy-rest 的脚本
安装 taipy-rest
安装稳定版本
最新稳定版taipy-rest可以通过 pip 直接安装:
pip install taipy-rest安装开发版本
如果想使用开发版本,可以通过 pip + git 从 taipy 仓库安装:
pip install git+https://git@github.com/Avaiga/taipy该命令会在当前 Python 环境中安装 taipy 包的开发版本及其全部依赖,其中包含taipy-rest包。
获取源码
如果需要本地获取taipy-rest源码以便查看实现细节或参与改进,可以克隆 GitHub 仓库:
git clone https://github.com/Avaiga/taipy.git克隆后会在本地生成taipy目录,其中包含全部包的源码,taipy-rest的源码位于taipy/rest目录下(即本文所分析的taipy/rest目录)。
运行前的配置
TAIPY_SETUP_FILE 环境变量
Taipy REST API 依赖 Taipy 配置对象的预先配置,也就是说,必须提前定义所有 DataNode、Task、Sequence 等实体的配置。包含这些配置的文件需要在运行时传给应用,具体需要定义的环境变量是:
TAIPY_SETUP_FILE:指向包含全部 Taipy 对象配置的文件的路径
如果使用 Docker,需要将该配置文件所在的文件夹映射为卷(volume),以便应用能够访问到该文件。
从仓库源码看,这一配置约定同样记录在 taipy/rest/INSTALLATION.md 中,与package_desc.md的表述完全一致。
服务级配置:RestConfig
除了实体配置,Taipy REST 服务本身也支持通过 Taipy 全局配置(Config)来调整运行参数。在 taipy/rest/config/rest_config.py 中定义了RestConfig(唯一配置节,name = "REST"),支持的配置项及默认值如下:
| 配置键 | 类型 | 默认值 | 说明 |
|---|---|---|---|
port | int | 5000 | REST 服务运行的端口 |
host | str | 127.0.0.1 | REST 服务绑定的主机 |
use_https | bool | False | 是否对 REST 服务启用 HTTPS |
ssl_cert | Optional[str] | None | SSL 证书文件的路径 |
ssl_key | Optional[str] | None | SSL 密钥文件的路径 |
这些属性同样支持模板替换(_TemplateHandler._replace_templates),即配置值中可以引用环境变量模板。
通过代码配置 REST 服务
RestConfig._configure_rest提供了编程式的配置入口,示例如下:
from taipy import Config Config.configure_rest( port=5000, host="0.0.0.0", use_https=True, ssl_cert="/path/to/cert.pem", ssl_key="/path/to/key.pem", )当use_https为True时,ssl_context属性会返回(ssl_cert, ssl_key)元组并交由 Flask 使用;否则返回None。
配置校验规则
taipy/rest/config/rest_checker.py 中的_RestConfigChecker会在配置检查阶段校验这些参数:
port必须是1到65535之间的整数;host必须是非空字符串;- 当
use_https为True时,ssl_cert与ssl_key都必须设置为合法的字符串,否则会产生配置错误提示。
这些校验保证服务在错误的配置下不会带病启动。
启动与运行
安装开发依赖
要运行 taipy-rest,需要先安装所需的开发依赖包。官方推荐使用 Pipenv 创建虚拟环境并安装开发包:
pip install pipenv pipenv install --dev本地运行(Flask 开发服务器)
在本地直接运行:
flask run也可以使用 Docker:
docker-compose up此外,还可以使用 Gunicorn 或 WSGI 服务器运行(详见下文生产部署章节)。
编程方式启动:Rest 可运行服务
从源码看,除了命令行方式,Taipy REST 还提供了一个可编程的入口。在 taipy/rest/rest.py 中定义了Rest类:
Rest.__init__会调用app.create_app创建一个 Flask 应用,并读取三个全局配置参数:Config.global_config.testing(bool):是否以测试模式运行;Config.global_config.env(Optional[str]):应用环境;Config.global_config.secret_key(Optional[str]):应用服务器密钥。
Rest.run(**kwargs)是阻塞方法,启动 REST API 服务器时会从Config.rest读取port、host与ssl_context并传给 Flask 的app.run。
也就是说,在实际业务代码中可以这样启动 Taipy REST 服务:
from taipy.rest import Rest rest = Rest() rest.run()也可以像 taipy/rest/app.py 的应用工厂那样,直接调用create_app(testing, flask_env, secret_key)获得 Flask 应用实例后自行托管。create_app还会执行以下初始化动作:
- 从环境变量读取
FLASK_ENV、TESTING、SECRET_KEY覆盖默认配置; - 设置
app.url_map.strict_slashes = False(容忍尾部斜杠差异); - 配置
RESTFUL_JSON使用自定义编码器_CustomEncoder(见 taipy/rest/commons/encoder.py); - 调用
configure_apispec注册 APISpec 并声明PaginatedResultschema; - 注册蓝图并调用
api.views.register_views()完成各资源路由与 OpenAPI 文档的注册。
apispec单例定义在 taipy/rest/extensions.py 中,用于生成 Swagger / OpenAPI 文档。
生产环境部署
package_desc.md指出该项目提供了简单的 WSGI 入口,可以配合 Gunicorn 或 uWSGI 运行。
使用 Gunicorn 运行
pip install gunicorn gunicorn myapi.wsgi:app执行后 Gunicorn 会在8000端口运行。如果选择 Gunicorn 作为 WSGI 服务器,相应的启动命令应当写入 docker-compose 文件中。
使用 uWSGI 运行
与 Gunicorn 类似:
pip install uwsgi uwsgi --http 127.0.0.1:5000 --module myapi.wsgi:app执行后 uWSGI 会在5000端口运行。同样,如果选择 uWSGI,相应的命令也应写入 docker-compose 文件。
部署到 Heroku
package_desc.md还给出了基于 Docker 的 Heroku 部署流程:
- 确保 Docker 可用(例如执行
docker ps无报错),并已通过heroku login登录; - 登录 Heroku 容器注册表:
heroku container:login- 创建 Heroku 应用:
heroku create- 构建镜像并推送到容器注册表:
heroku container:push web- 发布镜像:
heroku container:release web完成后即可通过heroku create返回的 URL 访问 taipy-rest 服务。
API 端点概览
从 taipy/rest/api/views.py 的蓝图定义(Blueprint("api", __name__, url_prefix="/api/v1"))可以看到,全部端点都挂载在/api/v1前缀下,覆盖六类 Taipy 实体,支持列表、按 ID 访问、读取/写入、提交/取消等操作:
DataNodes(数据节点)
GET/PUT/DELETE /api/v1/datanodes/<datanode_id>/:按 ID 获取、更新、删除数据节点GET /api/v1/datanodes/<datanode_id>/read/:读取数据节点内容POST /api/v1/datanodes/<datanode_id>/write/:写入数据节点GET /api/v1/datanodes/:数据节点列表
Tasks(任务)
GET/PUT/DELETE /api/v1/tasks/<task_id>/GET /api/v1/tasks/POST /api/v1/tasks/submit/<task_id>/:提交任务
Sequences(序列)
GET/PUT/DELETE /api/v1/sequences/<sequence_id>/GET /api/v1/sequences/POST /api/v1/sequences/submit/<sequence_id>/:提交序列
Scenarios(场景)
GET/PUT/DELETE /api/v1/scenarios/<scenario_id>/GET /api/v1/scenarios/POST /api/v1/scenarios/submit/<scenario_id>/:提交场景
Cycles(周期)
GET/PUT/DELETE /api/v1/cycles/<cycle_id>/GET /api/v1/cycles/
Jobs(作业)
GET/PUT/DELETE /api/v1/jobs/<job_id>/GET /api/v1/jobs/POST /api/v1/jobs/cancel/<job_id>/:取消作业
views.py还通过load_enterprise_resources在检测到企业版(EnterpriseEdition._is_installed())已安装时动态加载额外的企业资源(taipy.enterprise.rest.api.views),说明该模块保留了企业版扩展点。各端点的请求/响应结构由 taipy/rest/api/schemas/ 下的CycleSchema、DataNodeSchema、JobSchema、ScenarioSchema、SequenceSchema、TaskSchema定义,并在register_views()中注册进 APISpec。
内建 API 文档
启动应用后,可以在以下 URL 查看 API 文档(参见 taipy/rest/INSTALLATION.md):
/redoc-ui:ReDoc UI,配置为读取 OpenAPI yaml 文件/openapi.yml:以 yaml 格式返回 OpenAPI 规范文件
这些页面由 taipy/rest/commons/templates/ 下的swagger.j2与redoc.j2模板生成,apispec单例负责在应用启动时构建完整的 OpenAPI 规范(包含全部资源路径与 schema,以及PaginatedResult分页结构)。
测试与验证
仓库在 tests/rest 下提供了与taipy/rest结构对应的单元测试与端到端测试,例如test_end_to_end.py、test_datanode.py、test_scenario.py、test_cycle.py、test_task.py、test_sequence.py、test_job.py等,分别覆盖各实体的 REST 访问、提交与取消等行为,以及test_middleware.py(中间件)与test_rest_config.py(配置校验)。读者可以在完成安装后通过这些测试验证 REST 服务的行为是否符合预期。
总结
Taipy REST 是 Taipy 生态中负责"对外暴露"的一环:它以taipy-core的实体模型为底层,通过 Flask + Flask-RESTful 实现了一组位于/api/v1下的标准化 REST 端点,覆盖数据节点、任务、序列、场景、周期与作业的增删改查与提交/取消操作,并自带 OpenAPI / ReDoc 文档。运行上既支持开发期flask run与 Docker,也支持 Gunicorn、uWSGI 等生产级 WSGI 服务器以及 Heroku 容器化部署;配置上则依赖TAIPY_SETUP_FILE提供实体配置,并通过Config.configure_rest(...)调整端口、主机与 HTTPS 参数。对于需要将 Taipy 场景管理与数据分析能力接入更大 IT 生态的团队而言,Taipy REST 提供了低门槛、标准化的集成方式。
【免费下载链接】taipyTurns Data and AI algorithms into production-ready web applications in no time.项目地址: https://gitcode.com/GitHub_Trending/ta/taipy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考