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/taipyTaipy 是一个面向业务应用的 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.mdtaipy/rest目录的布局如下api/端点resources与 schema 定义api/views.py资源到 URL 的映射蓝图注册api/schemas/与 Taipy 对象相关的 schema用于数据的序列化与反序列化commons/全应用共享的公共文件commons/templates/用于生成文档的 Swagger 与 ReDoc 模板app.pyFlask 应用的配置与创建应用工厂extensions.py应用工厂中使用的单例如 apispecrest.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 githttps://gitgithub.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 服务启用 HTTPSssl_certOptional[str]NoneSSL 证书文件的路径ssl_keyOptional[str]NoneSSL 密钥文件的路径这些属性同样支持模板替换_TemplateHandler._replace_templates即配置值中可以引用环境变量模板。通过代码配置 REST 服务RestConfig._configure_rest提供了编程式的配置入口示例如下from taipy import Config Config.configure_rest( port5000, host0.0.0.0, use_httpsTrue, 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也可以使用 Dockerdocker-compose up此外还可以使用 Gunicorn 或 WSGI 服务器运行详见下文生产部署章节。编程方式启动Rest 可运行服务从源码看除了命令行方式Taipy REST 还提供了一个可编程的入口。在 taipy/rest/rest.py 中定义了Rest类Rest.__init__会调用app.create_app创建一个 Flask 应用并读取三个全局配置参数Config.global_config.testingbool是否以测试模式运行Config.global_config.envOptional[str]应用环境Config.global_config.secret_keyOptional[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 文件。部署到 Herokupackage_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-uiReDoc 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),仅供参考