Taipy Core 深度解析:数据集成、场景管理与版本管理后端引擎
【免费下载链接】taipyTurns Data and AI algorithms into production-ready web applications in no time.项目地址: https://gitcode.com/GitHub_Trending/ta/taipy
导读
Taipy Core 是 Taipy 生态中的核心后端引擎,负责将数据科学家手中的算法与数据转化为可生产化的业务应用后端。本文以仓库中 taipy/core/package_desc.md 为骨架,结合 taipy-core 4.2.0 的源码与测试,系统讲解其四大核心能力(数据集成与管理、场景管理、What-if 分析、版本管理)、实体模型、公共 API、Orchestrator 服务与安装测试方式,帮助你快速理解并上手 taipy-core。
一、Taipy Core 是什么
Taipy 是一个用于创建业务应用(Business Applications)的 Python 库。而 taipy-core 是其中面向业务的功能包,其定位可以从包描述与源码__init__.py中得到确认:
"The Taipy
corepackage provides powerful, customized,>pip install taipy-core当前仓库中 taipy/core/version.json 记录的版本为
4.2.0,可作为安装时版本判断的参考。2.2 安装开发版
通过 pip 与 git 从 taipy 仓库安装开发版:
pip install git+https://git@github.com/Avaiga/taipy该命令会在当前 Python 环境中安装 taipy 包的开发版本及其全部依赖(包含 taipy-core 包)。你也可以通过克隆仓库来查看源码或参与改进:
git clone https://github.com/Avaiga/taipy.git克隆后,taipy-core 的源码位于仓库的
taipy/core目录(在当前工作副本中即 taipy/core/)。2.3 可选依赖
从 taipy/core/setup.py 可以看到,taipy-core 为不同的数据后端提供了
extras_require可选依赖,按需安装可以启用对应数据节点类型的支持:extras_require = { "mssql": ["pyodbc>=4,<4.1"], "mysql": ["pymysql>1,<1.1"], "postgresql": ["psycopg2>2.9,<2.10"], "parquet": ["fastparquet==2022.11.0", "pyarrow>=16.0.0,<19.0"], "s3": ["boto3==1.29.1"], "mongo": ["pymongo[srv]>=4.2.0,<5.0"], }例如安装 PostgreSQL 支持:
pip install "taipy-core[postgresql]"三、核心实体模型:从 Data Node 到 Scenario
taipy-core 的所有能力都建立在几个核心实体之上,每个实体在源码中都有独立模块:
- Data Node(数据节点):对底层数据(文件、数据库、内存对象等)的统一抽象,负责数据的读写与编辑历史。实现见 taipy/core/data/data_node.py,类型覆盖 CSV、Excel、Parquet、Pickle、JSON、SQL、SQL Table、MongoDB、AWS S3、Generic 与 In-memory(见 taipy/core/data/)。
- Task(任务):一个可执行的 Python 函数及其输入输出 Data Node 的绑定,是编排的最小执行单元。实现见 taipy/core/task/task.py。
- Sequence(序列):一组按序执行的任务集合。实现见 taipy/core/sequence/sequence.py。
- Scenario(场景):业务分析的顶层实体,包含若干 Sequence 与 Data Node,代表一次完整的业务运行假设(例如"夏季促销方案")。实现见 taipy/core/scenario/scenario.py。
- Cycle(周期):当场景配置了频率(如每日、每周)时,按创建日期归入对应的周期,便于周期性的业务复盘。实现见 taipy/core/cycle/cycle.py。
- Job(作业):Task 被提交后生成的执行记录,携带状态机(见 taipy/core/job/status.py)与执行结果。
- Submission(提交):一次提交操作的统一记录,包含所创建的全部 Job。实现见 taipy/core/submission/submission.py。
这些实体统一由各 Manager 管理(如 taipy/core/scenario/_scenario_manager.py、taipy/core/data/_data_manager.py),并通过 Repository 层持久化(见 taipy/core/_repository/),默认采用文件系统存储。
四、第一步:用 Config 设计应用
package_desc.md对应的__init__.py明确指出,使用这些功能的第一步是通过Config单例类设计应用的特性与行为:"To use such functionalities, the first step consists of setting up the Taipy configuration to design your application's characteristics and behaviors. Use the
Config^singleton class (fromtaipy.common.config) to configure your application."
Config单例来自taipy.common.config,其在仓库中的类型声明见 taipy/common/config/config.pyi,常用的配置入口包括:
Config.configure_data_node(...):配置数据节点(存储类型、默认路径等),声明见 config.pyi,对应配置类 taipy/core/config/data_node_config.py。Config.configure_task(...):将函数与输入/输出数据节点绑定成任务,声明见 config.pyi,对应配置类 taipy/core/config/task_config.py。Config.configure_scenario(...):组合任务序列并可选指定周期频率,声明见 config.pyi,对应配置类 taipy/core/config/scenario_config.py。Config.configure_job_executions(...)与Config.configure_core(...):分别控制作业执行模式与 Core 全局行为(如开发模式、版本管理策略),声明见 config.pyi 与 config.pyi。一个最小配置与使用骨架如下:
import taipy as tp from taipy.common.config import Config # 1. 配置数据节点 input_cfg = Config.configure_data_node("input", storage_type="csv", default_path="data.csv") output_cfg = Config.configure_data_node("output", storage_type="csv", default_path="result.csv") # 2. 将业务函数包装为任务 def process_data(input_data): return input_data * 2 task_cfg = Config.configure_task("process", process_data, input=input_cfg, output=output_cfg) # 3. 配置场景 scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg]) # 4. 创建并运行场景 scenario = tp.create_scenario(scenario_cfg) tp.submit(scenario)说明:上述配置类与函数签名以仓库中 taipy/common/config/config.pyi 与 taipy/core/config/ 为准;具体的函数签名参数请以对应
.pyi声明为准。五、公共 API:场景、提交与查询
__init__.py指出,配置完成后只需import taipy as tp,即可使用taipy顶层模块中的全部功能。最常用的函数包括tp.create_scenario()、tp.get_scenarios()、tp.get_data_nodes()、tp.submit()。这些函数全部实现在 taipy/core/taipy.py 中,并最终委托给对应的 Manager 工厂。5.1 场景创建与 What-if 分析
tp.create_scenario(config, creation_date=None, name=None):基于场景配置创建新场景;会校验并锁定配置、管理应用版本;若场景属于某个周期,还会按创建日期与配置的 frequency 自动创建对应周期(见 taipy/core/taipy.py)。tp.get_scenarios(cycle=None, tag=None, is_sorted=False, descending=False, created_start_time=None, created_end_time=None, sort_key="name"):按周期、标签、创建时间过滤并排序场景,排序键支持name、id、config_id、creation_date、tags(见 taipy/core/taipy.py)。tp.set_primary(scenario)/tp.get_primary(cycle):将某场景提升为该周期的"主场景",或将主场景降级;get_primary_scenarios()可获取所有周期的主场景(见 taipy/core/taipy.py)。tp.compare_scenarios(*scenarios, data_node_config_id=None):对多个场景的数据节点做对比(仅对配置过 comparator 的数据节点生效),是 What-if 分析的重要入口(见 taipy/core/taipy.py)。tp.duplicate_scenario(scenario, ...):复制已有场景生成新场景,可通过data_to_duplicate控制数据节点是否一并复制(见 taipy/core/taipy.py)。注意:源码 docstring 明确警告,目前只有基于文件的数据节点才能复制数据,SQL、MongoDB 等数据节点复制后仍指向同一份数据,需手动调整以避免冲突。5.2 提交与执行
tp.submit(entity, force=False, wait=False, timeout=None, **properties):提交 Scenario、Sequence 或 Task 执行;提交 Sequence/Scenario 时其下所有任务都会进入调度;force=True可强制跳过本可跳过的任务,wait/timeout用于同步等待执行完成(见 taipy/core/taipy.py)。返回Submission对象。tp.get_submissions()/tp.get_latest_submission(entity)/tp.get_jobs()/tp.get_latest_job(task):查询提交与作业记录(见 taipy/core/taipy.py)。tp.cancel_job(job):取消作业并将其后的作业置为ABANDONED状态(见 taipy/core/taipy.py)。tp.delete_job(job, force=False)/tp.delete_jobs()/tp.delete(entity_id):删除作业与各类实体(见 taipy/core/taipy.py)。5.3 实体查询与订阅
tp.get(entity_id):按 ID 前缀自动识别实体类型并返回对应实体(Task / DataNode / Sequence / Scenario / Job / Cycle / Submission),见 taipy/core/taipy.py。tp.exists(entity_id)/tp.get_data_nodes()/tp.get_tasks()/tp.get_sequences()/tp.get_cycles():各类存在性与列表查询。tp.subscribe_scenario(callback, params=None, scenario=None)/tp.subscribe_sequence(...):订阅 Job 状态变化回调,用于在作业完成时触发通知或下游处理;订阅仅对之后创建的作业生效(见 taipy/core/taipy.py)。tp.get_parents(entity):递归查找一个 Data Node / Task / Sequence 的全部父级实体,结果按类型分组(scenario、sequence、task),见 taipy/core/taipy.py。tp.is_submittable(entity)、tp.is_editable(entity)、tp.is_readable(entity)、tp.is_deletable(entity):返回ReasonCollection对象,可当布尔值使用,并携带不可执行/不可编辑的具体原因(见 taipy/core/taipy.py)。tp.clean_all_entities(version_number):按版本号清空该版本下的全部实体(Job、Submission、Scenario、Cycle、Sequence、Task、DataNode)并删除版本,见 taipy/core/taipy.py。六、Orchestrator 服务:作业调度的运行引擎
package_desc.md对应文档的__init__.py特别强调了 Orchestrator 服务:"Taipy provides a runnable service,
Orchestrator^that runs as a service in a dedicated thread. The purpose is to have a dedicated thread responsible for dispatching the submitted jobs to an available executor for their execution. In particular, thisOrchestrator^service is automatically run when used with Taipy REST or Taipy GUI."在 taipy/core/orchestrator.py 中可以看到
Orchestrator类的完整实现:
Orchestrator().run(force_restart=False):启动服务。它会依次执行配置更新(从命令行参数合并)、版本管理(_VersionManagerFactory)、配置校验与配置锁定(Config.block_update()),最后启动 Job Dispatcher(见 orchestrator.py)。Orchestrator().stop(wait=True, timeout=None):停止 Dispatcher 并解锁配置(Config.unblock_update())(见 orchestrator.py)。- 配置锁定意味着:服务运行期间 Config 不再允许修改,因此在调用
tp.create_scenario()、tp.submit()等会触发版本管理与配置锁定的函数后,后续的配置变更需要谨慎规划。- 旧版的
Core服务类已废弃,Core()现在会直接实例化并返回Orchestrator,同时输出弃用警告(见 taipy/core/_core.py)。- 在开发模式(
Config.job_config.is_development)下,Orchestrator 启动时会同步检查并执行处于待运行状态的作业(见 orchestrator.py)。与 GUI/REST 集成时,Orchestrator 会自动运行,因此纯后端脚本模式下你需要自行启动服务才能让提交的任务真正被调度执行——否则提交的实体不会被执行,源码中的
submit函数也会发出对应警告(见 taipy/core/taipy.py 上的装饰器_warn_no_orchestrator_service)。七、版本管理
版本管理是 taipy-core 面向生产运维的核心能力之一,实现集中在 taipy/core/_version/:
_VersionManager(见 taipy/core/_version/_version_manager.py)负责版本的创建、切换、查询与删除;- 所有实体(数据节点、任务、场景等)都按版本号隔离存储,便于多版本实验并行与回滚;
- 上文提到的
tp.clean_all_entities(version_number)提供了按版本批量清理实体的运维入口;- Orchestrator 启动时也会调用版本管理逻辑(
_manage_version()),保证实体与当前代码版本一致。版本相关的迁移工具与 CLI 见 taipy/core/_version/_migrate_cli.py 与 taipy/core/_version/_cli/。
八、运行测试与参与开发
taipy/core/INSTALLATION.md 给出了开发者的测试流程:使用 Pipenv 创建虚拟环境并安装开发依赖,然后运行 taipy-core 的测试套件:
pip install pipenv pipenv install --dev pipenv run pytest tests/core当前仓库中的核心测试覆盖了数据节点读写(如 tests/core/data/test_csv_data_node.py、tests/core/data/test_sql_data_node.py)、场景管理(tests/core/scenario/)、作业与编排(tests/core/_orchestrator/)、版本管理(tests/core/_version/)等,是理解各模块行为的最佳参考。
九、许可证
taipy-core 采用 Apache License 2.0 开源协议,版权归 Avaiga Private Limited(Copyright 2021-2025),许可全文可在 taipy/core/package_desc.md 与 LICENSE 中查看。协议明确允许使用、修改与再分发,但需保留版权声明并遵守 Apache 2.0 的条款与条件。
结语
从数据节点到场景,从提交执行到版本管理,taipy-core 把业务应用后端最常见的诉求(数据接入、任务编排、What-if 实验、多版本并存)沉淀为一套结构清晰、可配置、可编程的 Python API。本文所涉及的源码路径(taipy/core/taipy.py、taipy/core/orchestrator.py、taipy/core/config/、taipy/core/data/ 等)均可在当前仓库中直接查阅,进一步深入时可以结合 tests/core/ 下的测试用例验证各 API 的实际行为。
【免费下载链接】taipyTurns Data and AI algorithms into production-ready web applications in no time.
项目地址: https://gitcode.com/GitHub_Trending/ta/taipy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考