news 2026/9/13 8:08:44

Taipy REST 实战指南:将 Taipy Core 业务应用以 REST API 方式交付与自动化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Taipy REST 实战指南:将 Taipy Core 业务应用以 REST API 方式交付与自动化

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-coretaipy-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"),支持的配置项及默认值如下:

配置键类型默认值说明
portint5000REST 服务运行的端口
hoststr127.0.0.1REST 服务绑定的主机
use_httpsboolFalse是否对 REST 服务启用 HTTPS
ssl_certOptional[str]NoneSSL 证书文件的路径
ssl_keyOptional[str]NoneSSL 密钥文件的路径

这些属性同样支持模板替换(_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_httpsTrue时,ssl_context属性会返回(ssl_cert, ssl_key)元组并交由 Flask 使用;否则返回None

配置校验规则

taipy/rest/config/rest_checker.py 中的_RestConfigChecker会在配置检查阶段校验这些参数:

  • port必须是165535之间的整数;
  • host必须是非空字符串;
  • use_httpsTrue时,ssl_certssl_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读取porthostssl_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_ENVTESTINGSECRET_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 部署流程:

  1. 确保 Docker 可用(例如执行docker ps无报错),并已通过heroku login登录;
  2. 登录 Heroku 容器注册表:
heroku container:login
  1. 创建 Heroku 应用:
heroku create
  1. 构建镜像并推送到容器注册表:
heroku container:push web
  1. 发布镜像:
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/ 下的CycleSchemaDataNodeSchemaJobSchemaScenarioSchemaSequenceSchemaTaskSchema定义,并在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.j2redoc.j2模板生成,apispec单例负责在应用启动时构建完整的 OpenAPI 规范(包含全部资源路径与 schema,以及PaginatedResult分页结构)。

测试与验证

仓库在 tests/rest 下提供了与taipy/rest结构对应的单元测试与端到端测试,例如test_end_to_end.pytest_datanode.pytest_scenario.pytest_cycle.pytest_task.pytest_sequence.pytest_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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 8:08:20

S7-200 SMART PLC与MCGS组态软件在立体仓库控制中的应用

1. S7-200 SMART PLC与MCGS组态软件的基础认知西门子S7-200 SMART系列PLC作为工业自动化领域的经典控制器&#xff0c;其V3.0版本通过双网口设计和信号板扩展能力&#xff0c;显著提升了设备连接灵活性。实测发现&#xff0c;其本体集成的PROFINET接口在连接MCGS触摸屏时&#…

作者头像 李华
网站建设 2026/9/13 8:07:02

COMSOL激光打孔仿真:多物理场耦合与工艺优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 8:06:21

文案爆款规律分析与智能生成技术解析

1. 项目概述&#xff1a;文案爆款规律分析与创新技巧生成这个工具的核心价值在于解决内容创作者最头疼的问题——如何持续产出高点击率的优质文案。我见过太多团队每天绞尽脑汁想标题、写文案&#xff0c;最后点击量却像开盲盒一样不稳定。通过系统分析历史文案表现数据&#x…

作者头像 李华
网站建设 2026/9/13 8:00:35

滑动窗口最大值问题:单调队列解法与工程实践

1. 问题背景与核心挑战 滑动窗口最大值问题&#xff08;LeetCode 239题&#xff09;是算法面试中的经典高频题目&#xff0c;考察对数据结构和滑动窗口技巧的综合运用能力。题目要求&#xff1a;给定一个整数数组nums和一个固定大小的窗口k&#xff0c;窗口从数组最左端滑动到最…

作者头像 李华