celestialflow 3.0.8__tar.gz → 3.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. {celestialflow-3.0.8 → celestialflow-3.1.0}/PKG-INFO +104 -113
  2. {celestialflow-3.0.8 → celestialflow-3.1.0}/README.md +102 -112
  3. {celestialflow-3.0.8 → celestialflow-3.1.0}/pyproject.toml +17 -2
  4. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/__init__.py +4 -5
  5. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/css/base.css +35 -0
  6. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/css/dashboard.css +41 -73
  7. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/css/errors.css +4 -0
  8. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/js/main.js +20 -12
  9. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/js/task_errors.js +8 -7
  10. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/js/task_injection.js +3 -3
  11. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/js/task_statuses.js +6 -27
  12. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/js/task_structure.js +5 -4
  13. celestialflow-3.1.0/src/celestialflow/static/js/task_summary.js +36 -0
  14. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/js/utils.js +34 -1
  15. celestialflow-3.0.8/src/celestialflow/task_manage.py → celestialflow-3.1.0/src/celestialflow/task_executor.py +242 -134
  16. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_graph.py +240 -173
  17. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_logging.py +82 -18
  18. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_nodes.py +21 -24
  19. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_progress.py +16 -16
  20. celestialflow-3.1.0/src/celestialflow/task_queue.py +297 -0
  21. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_report.py +103 -15
  22. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_stage.py +95 -21
  23. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_structure.py +34 -8
  24. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_tools.py +286 -95
  25. celestialflow-3.1.0/src/celestialflow/task_types.py +124 -0
  26. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/task_web.py +89 -22
  27. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/templates/index.html +19 -9
  28. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow.egg-info/PKG-INFO +104 -113
  29. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow.egg-info/SOURCES.txt +3 -6
  30. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow.egg-info/requires.txt +1 -0
  31. celestialflow-3.0.8/tests/test_manage.py → celestialflow-3.1.0/tests/test_executor.py +24 -22
  32. {celestialflow-3.0.8 → celestialflow-3.1.0}/tests/test_graph.py +0 -2
  33. {celestialflow-3.0.8 → celestialflow-3.1.0}/tests/test_nodes.py +6 -5
  34. {celestialflow-3.0.8 → celestialflow-3.1.0}/tests/test_structure.py +0 -2
  35. celestialflow-3.0.8/src/celestialflow/adapters/__init__.py +0 -0
  36. celestialflow-3.0.8/src/celestialflow/adapters/celestialtree/__init__.py +0 -2
  37. celestialflow-3.0.8/src/celestialflow/adapters/celestialtree/client.py +0 -201
  38. celestialflow-3.0.8/src/celestialflow/adapters/celestialtree/tools.py +0 -41
  39. celestialflow-3.0.8/src/celestialflow/task_queue.py +0 -248
  40. celestialflow-3.0.8/src/celestialflow/task_types.py +0 -99
  41. {celestialflow-3.0.8 → celestialflow-3.1.0}/setup.cfg +0 -0
  42. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/css/inject.css +0 -0
  43. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/favicon.ico +0 -0
  44. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow/static/js/task_topology.js +0 -0
  45. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow.egg-info/dependency_links.txt +0 -0
  46. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow.egg-info/entry_points.txt +0 -0
  47. {celestialflow-3.0.8 → celestialflow-3.1.0}/src/celestialflow.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: celestialflow
3
- Version: 3.0.8
3
+ Version: 3.1.0
4
4
  Summary: A flexible GRAPH-based task orchestration framework.
5
5
  Author-email: Mr-xiaotian <mingxiaomingtian@gmail.com>
6
6
  License: MIT
@@ -22,6 +22,7 @@ Requires-Dist: requests
22
22
  Requires-Dist: networkx
23
23
  Requires-Dist: redis
24
24
  Requires-Dist: jinja2
25
+ Requires-Dist: celestialtree
25
26
 
26
27
  # CelestialFlow ——一个轻量级、可并行、基于图结构的 Python 任务调度框架
27
28
 
@@ -48,21 +49,30 @@ Requires-Dist: jinja2
48
49
  - 相比 Airflow/Dagster 更轻、更快开始
49
50
  - 相比 multiprocessing/threading 更结构化,可直接表达 loop / complete graph 等复杂依赖模式
50
51
 
51
- 框架的基本单元为 **TaskStage**(由 `TaskManager` 派生),每个 stage 内部绑定一个独立的执行函数,并支持四种运行模式:
52
+ 框架的基本单元为 **TaskExecutor**,可独立运行,并支持四种执行模式:
52
53
 
53
54
  * **线性(serial)**
54
55
  * **多线程(thread)**
55
56
  * **多进程(process)**
56
57
  * **协程(async)**
57
58
 
58
- 每个 stage 均可独立运行,也可作为节点互相连接,形成具有上游与下游依赖关系的任务图(**TaskGraph**)。下游 stage 会自动接收上游执行完成的结果作为输入,从而形成明确的数据流。
59
+ TaskExecutor 实现了对任务的结果缓存,任务去重,进度条显示,多执行模式比较等功能,单独使用也很好用。
60
+
61
+ 但除去直接使用 TaskExecutor,更重要的是使用其子类**TaskStage**。TaskStage 可以互相连接,形成具有上游与下游依赖关系的任务图(**TaskGraph**)。下游 stage 会自动接收上游执行完成的结果作为输入,从而形成明确的数据流。
62
+
63
+ TaskStage 的任务执行模式只有两种:
64
+
65
+ * **线性(serial)**
66
+ * **多线程(thread)**
59
67
 
60
68
  在图级别上,每个 Stage 支持两种上下文模式:
61
69
 
62
70
  * **线性执行(serial layout)**:当前节点执行完毕再启动下一节点(下游节点可提前接收任务但不会立即执行)。
63
71
  * **并行执行(process layout)**:当前节点启动后立刻前去启动下一节点。
64
72
 
65
- TaskGraph 能构建完整的 **有向图结构(Directed Graph)**,不仅支持传统的有向无环图(DAG),也能灵活表达 **树形(Tree)**、**环形(loop)** 乃至于 **完全图(Complete Graph)** 形式的任务依赖。
73
+ TaskGraph 能构建完整的 **有向图结构(Directed Graph)**,不仅支持传统的有向无环图(DAG),也能灵活表达 **树形(Tree)**、**环形(loop)** 乃至于 **完全图(Complete Graph)** 形式的任务依赖。
74
+
75
+ 在执行与调度之外,CelestialFlow 进一步引入 **CelestialTree(简称: ctree) 事件追踪系统**,为每一个任务及其衍生行为(成功、失败、重试、拆分、路由等)记录明确的因果关系。借助 ctree,可以从任意一个初始任务出发,完整还原其在 TaskGraph 中的传播路径与执行轨迹,使任务系统可以进行完整的**追溯、分析、解释**。
66
76
 
67
77
  在此基础上,CelestialFlow 支持 Web 可视化监控,并可通过 Redis 实现跨进程、跨设备协作;同时引入基于 Go 的外部 worker(通过 Redis 通信),用于承载 CPU 密集型任务,弥补 Python 在该场景下的性能瓶颈。
68
78
 
@@ -80,30 +90,9 @@ flowchart LR
80
90
  S3[TaskStage C]
81
91
  S4[TaskStage D]
82
92
 
83
- T1[Last Stage]
84
- T2[Next Stage]
85
-
86
- TS[[TaskSplitter]]
87
- TRSI1[/TaskRedisSink/]
88
- TRSI2[/TaskRedisSink/]
89
- TRSO[/TaskRedisSource/]
90
- TRA[/TaskRedisAck/]
91
-
92
- RE1[(Redis)]
93
- RE2[(Redis)]
94
- G1((GoWorker))
95
- G2((GoWorker))
96
-
97
93
  S1 --> S2 --> S3 --> S1
98
94
  S1 --> S4
99
95
 
100
- T1 -->|1 task| TS
101
- TS -->|N task| T2
102
-
103
- TRSI1 -.-> RE1 -.-> TRSO
104
- TRSI2 -.->|task| RE2 -.->|task| G1
105
- G2 -.->|result| RE2 -.->|result| TRA
106
-
107
96
  end
108
97
 
109
98
  %% 美化 TaskGraph 外框
@@ -114,13 +103,6 @@ flowchart LR
114
103
 
115
104
  %% 美化 TaskStages
116
105
  class S1,S2,S3,S4 blueNode;
117
- class T1,T2 blueNode;
118
-
119
- %% 美化 特殊Stage
120
- class TS,TRA,TRSI1,TRSI2,TRSO blueNode;
121
-
122
- %% 美化 外部结构
123
- class RE1,RE2,G1,G2 blueNode;
124
106
 
125
107
  %% ===== WebUI =====
126
108
  subgraph W[WebUI]
@@ -154,7 +136,7 @@ pip install celestialflow
154
136
  一个简单的可运行代码:
155
137
 
156
138
  ```python
157
- from celestialflow import TaskManager, TaskGraph
139
+ from celestialflow import TaskStage, TaskGraph
158
140
 
159
141
  def add(x, y):
160
142
  return x + y
@@ -164,8 +146,8 @@ def square(x):
164
146
 
165
147
  if __name__ == "__main__":
166
148
  # 定义两个任务节点
167
- stage1 = TaskManager(add, execution_mode="thread", unpack_task_args=True)
168
- stage2 = TaskManager(square, execution_mode="thread")
149
+ stage1 = TaskStage(add, execution_mode="thread", unpack_task_args=True)
150
+ stage2 = TaskStage(square, execution_mode="thread")
169
151
 
170
152
  # 构建任务图结构
171
153
  stage1.set_graph_context([stage2], stage_mode="process", stage_name="Adder")
@@ -190,8 +172,9 @@ if __name__ == "__main__":
190
172
 
191
173
  若你想了解框架的整体结构与核心组件,下面的参考文档会对你有帮助:
192
174
 
193
- - [🔧TaskManage/TaskStage概念](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/reference/task_manage.md)
194
- - [🌐TaskGrapg概念](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/reference/task_graph.md)
175
+ - [🔧TaskExecutor概念](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/reference/task_executor.md)
176
+ - [🔧TaskStage概念](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/reference/task_stage.md)
177
+ - [🌐TaskGraph概念](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/reference/task_graph.md)
195
178
  - [📚Go Worker概念](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/reference/go_worker.md)
196
179
 
197
180
  推荐阅读顺序:
@@ -200,18 +183,18 @@ if __name__ == "__main__":
200
183
  flowchart TD
201
184
  classDef whiteNode fill:#ffffff,stroke:#000000,color:#000000;
202
185
 
203
- TM[TaskManage] --> TG[TaskGraph]
204
- TM --> TP[TaskProgress]
186
+ TM[TaskExecutor.md] --> TS[TaskStage.md] --> TG[TaskGraph.md]
187
+ TM --> TP[TaskProgress.md]
205
188
 
206
- TG --> TQ[TaskQueue]
207
- TG --> TN[TaskNodes]
208
- TG --> TR[TaskReport]
209
- TG --> TS[TaskStructure]
189
+ TG --> TQ[TaskQueue.md]
190
+ TG --> TN[TaskNodes.md]
191
+ TG --> TR[TaskReport.md]
192
+ TG --> TSR[TaskStructure.md]
210
193
 
211
- TR --> TW[TaskWeb]
212
- TN --> GW[Go Worker]
194
+ TR --> TW[TaskWeb.md]
195
+ TN --> GW[Go Worker.md]
213
196
 
214
- class TM,TG,TP,TQ,TN,TR,TS,TW,GW whiteNode;
197
+ class TM,TG,TP,TQ,TN,TR,TS,TW,GW,TSR whiteNode;
215
198
  ```
216
199
 
217
200
  以下三篇可以作为补充阅读:
@@ -224,42 +207,49 @@ flowchart TD
224
207
 
225
208
  [📘案例教程](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/tutorial.md)
226
209
 
210
+ 如果你对3.0.7版本加入的ctree_client与其功能感兴趣, 可以看看这一篇:
211
+
212
+ [📚CelestialTreeClient](https://github.com/Mr-xiaotian/CelestialFlow/blob/main/docs/reference/ctree_client.md)
213
+
227
214
  ## 环境要求(Requirements)
228
215
 
229
216
  **CelestialFlow** 基于 Python 3.8+,并依赖以下核心组件。
230
217
  请确保你的环境能够正常安装这些依赖(`pip install celestialflow` 会自动安装)。
231
218
 
232
219
  | 依赖包 | 说明 |
233
- | ---------------- | ---- |
234
- | **Python ≥ 3.8** | 运行环境,建议使用 3.10 及以上版本 |
235
- | **tqdm** | 控制台进度条显示,用于任务执行可视化 |
236
- | **loguru** | 高性能日志系统,支持多进程安全输出 |
237
- | **fastapi** | Web 服务接口框架(用于任务可视化与远程控制) |
238
- | **uvicorn** | FastAPI 的高性能 ASGI 服务器 |
239
- | **requests** | HTTP 客户端库,用于任务状态上报与远程调用 |
240
- | **networkx** | 任务图(TaskGraph)结构与依赖分析 |
241
- | **redis** | 可选组件,用于分布式任务通信(`TaskRedis*` 系列模块) |
242
- | **jinja2** | FastAPI 模板引擎,用于 Web 可视化界面渲染 |
220
+ | ----------------- | ---- |
221
+ | **Python ≥ 3.8** | 运行环境,建议使用 3.10 及以上版本 |
222
+ | **tqdm** | 控制台进度条显示,用于任务执行可视化 |
223
+ | **loguru** | 高性能日志系统,支持多进程安全输出 |
224
+ | **fastapi** | Web 服务接口框架(用于任务可视化与远程控制) |
225
+ | **uvicorn** | FastAPI 的高性能 ASGI 服务器 |
226
+ | **requests** | HTTP 客户端库,用于任务状态上报与远程调用 |
227
+ | **networkx** | 任务图(TaskGraph)结构与依赖分析 |
228
+ | **jinja2** | FastAPI 模板引擎,用于 Web 可视化界面渲染 |
229
+ | **redis** | 可选组件,用于分布式任务通信(`TaskRedis*` 系列模块) |
230
+ | **celestialtree** | 可选组件,用于任务状态上报与远程调用(`ctree_client`) |
243
231
 
244
232
  ## 文件结构(File Structure)
245
233
 
246
234
  ```
247
- 📁 CelestialFlow (213MB 633KB 545B)
248
- 📁 docs (25KB 183B)
249
- 📁 reference (20KB 175B)
235
+ 📁 CelestialFlow (224MB 407KB 500B)
236
+ 📁 docs (34KB 944B)
237
+ 📁 reference (29KB 995B)
238
+ 📝 ctree_client.md (6KB 997B)
250
239
  📝 go_worker.md (6KB 378B)
251
240
  📝 task_graph.md (4KB 989B)
252
241
  📝 task_logging.md (0B)
253
- 📝 task_manage.md (7KB 7B)
254
- 📝 task_nodes.md (1KB 737B)
242
+ 📝 task_manage.md (7KB 499B)
243
+ 📝 task_nodes.md (4KB 68B)
255
244
  📝 task_progress.md (0B)
256
245
  📝 task_queue.md (0B)
257
246
  📝 task_report.md (0B)
247
+ 📝 task_stage.md (0B)
258
248
  📝 task_structure.md (112B)
259
249
  📝 task_tools.md (0B)
260
250
  📝 task_types.md (0B)
261
251
  📝 task_web.md (0B)
262
- 📝 quick_start.md (5KB 8B)
252
+ 📝 quick_start.md (4KB 973B)
263
253
  📝 tutorial.md (0B)
264
254
  📁 experiments (15KB 111B)
265
255
  🐍 benchmark_datastructures.py (6KB 52B)
@@ -282,64 +272,56 @@ flowchart TD
282
272
  📷 logo.png (122KB 747B)
283
273
  📷 web_display.png (129KB 545B)
284
274
  🎞️ web_ui.gif (3MB 635KB 909B)
285
- 📁 src (1MB 920KB 171B)
286
- 📁 celestialflow (1MB 902KB 818B)
287
- 📁 adapters (13KB 837B)
288
- 📁 celestialtree (13KB 681B)
289
- 📁 [1项排除的目录] (6KB 960B)
290
- 🐍 client.py (5KB 486B)
291
- 🐍 tools.py (1KB 182B)
292
- 🐍 __init__.py (77B)
293
- 📁 [1项排除的目录] (156B)
294
- 🐍 __init__.py (0B)
295
- 📁 static (1MB 417KB 101B)
296
- 📁 css (31KB 410B)
297
- 🎨 base.css (6KB 155B)
298
- 🎨 dashboard.css (7KB 277B)
299
- 🎨 errors.css (5KB 168B)
275
+ 📁 src (1MB 929KB 111B)
276
+ 📁 celestialflow (1MB 911KB 486B)
277
+ 📁 static (1MB 417KB 367B)
278
+ 📁 css (31KB 621B)
279
+ 🎨 base.css (6KB 181B)
280
+ 🎨 dashboard.css (7KB 414B)
281
+ 🎨 errors.css (5KB 216B)
300
282
  🎨 inject.css (12KB 834B)
301
- 📁 js (33KB 617B)
302
- 📜 main.js (5KB 77B)
303
- 📜 task_errors.js (4KB 550B)
304
- 📜 task_injection.js (8KB 491B)
305
- 📜 task_statuses.js (8KB 63B)
306
- 📜 task_structure.js (4KB 668B)
283
+ 📁 js (33KB 672B)
284
+ 📜 main.js (5KB 65B)
285
+ 📜 task_errors.js (4KB 595B)
286
+ 📜 task_injection.js (8KB 484B)
287
+ 📜 task_statuses.js (8KB 51B)
288
+ 📜 task_structure.js (4KB 709B)
307
289
  📜 task_topology.js (1KB 375B)
308
290
  📜 utils.js (1KB 441B)
309
291
  ❓ favicon.ico (1MB 352KB 98B)
310
- 📁 templates (13KB 150B)
311
- 🌐 index.html (13KB 150B)
312
- 📁 [1项排除的目录] (331KB 149B)
313
- 🐍 task_graph.py (23KB 835B)
314
- 🐍 task_logging.py (8KB 903B)
315
- 🐍 task_manage.py (33KB 577B)
316
- 🐍 task_nodes.py (10KB 922B)
292
+ 📁 templates (13KB 174B)
293
+ 🌐 index.html (13KB 174B)
294
+ 📁 [1项排除的目录] (339KB 553B)
295
+ 🐍 task_graph.py (26KB 700B)
296
+ 🐍 task_logging.py (10KB 282B)
297
+ 🐍 task_manage.py (36KB 110B)
298
+ 🐍 task_nodes.py (10KB 814B)
317
299
  🐍 task_progress.py (1KB 477B)
318
- 🐍 task_queue.py (8KB 570B)
319
- 🐍 task_report.py (4KB 805B)
320
- 🐍 task_stage.py (5KB 511B)
321
- 🐍 task_structure.py (5KB 996B)
322
- 🐍 task_tools.py (15KB 105B)
323
- 🐍 task_types.py (2KB 265B)
324
- 🐍 task_web.py (5KB 693B)
325
- 🐍 __init__.py (1KB 114B)
326
- 📁 [1项排除的目录] (17KB 377B)
327
- 📁 tests (126KB 669B)
328
- 📁 [1项排除的目录] (90KB 310B)
300
+ 🐍 task_queue.py (10KB 948B)
301
+ 🐍 task_report.py (4KB 828B)
302
+ 🐍 task_stage.py (6KB 577B)
303
+ 🐍 task_structure.py (7KB 255B)
304
+ 🐍 task_tools.py (17KB 19B)
305
+ 🐍 task_types.py (2KB 269B)
306
+ 🐍 task_web.py (6KB 235B)
307
+ 🐍 __init__.py (1KB 22B)
308
+ 📁 [1项排除的目录] (17KB 649B)
309
+ 📁 tests (126KB 724B)
310
+ 📁 [1项排除的目录] (90KB 464B)
311
+ 🐍 conftest.py (49B)
329
312
  📝 README.md (6KB 324B)
330
- 🐍 test_graph.py (5KB 594B)
313
+ 🐍 test_graph.py (5KB 547B)
331
314
  🐍 test_manage.py (3KB 90B)
332
- 🐍 test_nodes.py (11KB 272B)
333
- 🐍 test_structure.py (10KB 103B)
334
- 📁 [6项排除的目录] (199MB 931KB 238B)
315
+ 🐍 test_nodes.py (11KB 218B)
316
+ 🐍 test_structure.py (10KB 56B)
317
+ 📁 [6项排除的目录] (210MB 685KB 450B)
335
318
  ❓ .env (88B)
336
319
  ❓ .gitignore (272B)
337
320
  ❓ LICENSE (1KB 65B)
338
321
  ❓ Makefile (501B)
339
- ❓ pyproject.toml (1KB 223B)
340
- ⚙️ pytest.ini (254B)
341
- 📝 README.md (15KB 109B)
342
- (celestial-flow 3.0.8)
322
+ ❓ pyproject.toml (1KB 594B)
323
+ 📝 README.md (16KB 3B)
324
+ (celestial-flow 3.0.9)
343
325
  ```
344
326
 
345
327
  (该视图由我的另一个项目[CelestialVault](https://github.com/Mr-xiaotian/CelestialVault)中inst_file.FileTree.print_tree()生成。)
@@ -361,8 +343,17 @@ flowchart TD
361
343
  - 3.0.4: 新增一个抽象结构TaskQueue, 用于表示节点的所有"入边"与"出边"; 恢复未消费任务的保存功能
362
344
  - 3.0.5: 删除原有的TaskRedisTransfer节点, 并增添三种新的redis交互节点TaskRedisSink TaskRedisSource TaskRedisAck, 用于跨语言 跨进程 跨设备处理任务; 并在Web页面添加展示拓扑信息的卡片
363
345
  - 3.0.6: 添加对[CelestialTree](https://github.com/Mr-xiaotian/CelestialTree)系统的支持, 现在可以追踪单个任务的流向
364
- - 3.0.7: 将TaskStage从TaskManager中单独抽出来作为一个子类; 增加新节点TaskRouter, 可以将传入的任务选择的传给不同的下游节点, 而不是进行广播
365
- - 3.0.8: 在ctree关系上将"任务重试"后的"任务成功/失败/重试"视为因果关系, 而非之前的并行关系; 重构错误搜集部分逻辑; 修复大量3.0.6与3.07版本引入的bug; 优化部分log表现
346
+ - 3.0.7: 将TaskStage从TaskExecutor中单独抽出来作为一个子类; 增加新节点TaskRouter, 可以将传入的任务选择的传给不同的下游节点, 而不是进行广播
347
+ - 3.0.8: 在ctree逻辑上将"任务重试"事件后的"任务成功/失败/重试"事件视为因果关系, 而非之前的并行关系; 重构错误搜集部分逻辑; 修复大量3.0.6与3.07版本引入的bug; 优化部分log表现
348
+ - 3.0.9:
349
+ - 更新前端mermaid显示中部分节点图标;
350
+ - 对ctree_client进行匹配CelestialTree的大量修改;
351
+ - 将ctree_client移出为单独的project;
352
+ - 在前端中添加error_id的显示, 为之后显示provenance_tree做准备;
353
+ - 增加大量warning与error, 用于提醒不规范设置;
354
+ - 优化前后端中错误数据的传输方式, 在大量错误数据时减少内存消耗;
355
+ - 优化TaskLogger中log队列的准入机制;
356
+ - 修改部分Bug
366
357
 
367
358
  ## Star 历史趋势(Star History)
368
359
 
@@ -374,6 +365,6 @@ flowchart TD
374
365
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
375
366
 
376
367
  ## 作者(Author)
377
- Author: Mr-xiaotian
378
- Email: mingxiaomingtian@gmail.com
368
+ Author: Mr-xiaotian
369
+ Email: mingxiaomingtian@gmail.com
379
370
  Project Link: [https://github.com/Mr-xiaotian/CelestialFlow](https://github.com/Mr-xiaotian/CelestialFlow)