celestialflow 3.1.2__tar.gz → 3.1.4__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.
- {celestialflow-3.1.2 → celestialflow-3.1.4}/PKG-INFO +21 -63
- {celestialflow-3.1.2 → celestialflow-3.1.4}/README.md +19 -60
- {celestialflow-3.1.2 → celestialflow-3.1.4}/pyproject.toml +75 -71
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow/__init__.py +9 -6
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow/graph/__init__.py +2 -2
- celestialflow-3.1.2/src/celestialflow/graph/graph.py → celestialflow-3.1.4/src/celestialflow/graph/core_graph.py +161 -166
- celestialflow-3.1.2/src/celestialflow/graph/structure.py → celestialflow-3.1.4/src/celestialflow/graph/core_structure.py +28 -20
- celestialflow-3.1.2/src/celestialflow/graph/analysis.py → celestialflow-3.1.4/src/celestialflow/graph/util_analysis.py +8 -8
- celestialflow-3.1.2/src/celestialflow/graph/serialize.py → celestialflow-3.1.4/src/celestialflow/graph/util_serialize.py +2 -2
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow/observability/__init__.py +1 -1
- celestialflow-3.1.2/src/celestialflow/observability/report.py → celestialflow-3.1.4/src/celestialflow/observability/core_report.py +78 -24
- celestialflow-3.1.4/src/celestialflow/persistence/__init__.py +13 -0
- celestialflow-3.1.4/src/celestialflow/persistence/core_base.py +61 -0
- celestialflow-3.1.4/src/celestialflow/persistence/core_fail.py +103 -0
- celestialflow-3.1.4/src/celestialflow/persistence/core_log.py +375 -0
- celestialflow-3.1.2/src/celestialflow/persistence/constant.py → celestialflow-3.1.4/src/celestialflow/persistence/util_constant.py +2 -1
- celestialflow-3.1.2/src/celestialflow/persistence/jsonl.py → celestialflow-3.1.4/src/celestialflow/persistence/util_jsonl.py +11 -58
- celestialflow-3.1.4/src/celestialflow/runtime/__init__.py +16 -0
- celestialflow-3.1.4/src/celestialflow/runtime/core_envelope.py +43 -0
- celestialflow-3.1.4/src/celestialflow/runtime/core_metrics.py +300 -0
- celestialflow-3.1.2/src/celestialflow/runtime/progress.py → celestialflow-3.1.4/src/celestialflow/runtime/core_progress.py +17 -9
- celestialflow-3.1.4/src/celestialflow/runtime/core_queue.py +329 -0
- celestialflow-3.1.4/src/celestialflow/runtime/core_runner.py +275 -0
- celestialflow-3.1.2/src/celestialflow/runtime/errors.py → celestialflow-3.1.4/src/celestialflow/runtime/util_errors.py +4 -3
- celestialflow-3.1.2/src/celestialflow/runtime/estimators.py → celestialflow-3.1.4/src/celestialflow/runtime/util_estimators.py +12 -11
- celestialflow-3.1.2/src/celestialflow/runtime/factories.py → celestialflow-3.1.4/src/celestialflow/runtime/util_factories.py +25 -14
- celestialflow-3.1.2/src/celestialflow/runtime/hash.py → celestialflow-3.1.4/src/celestialflow/runtime/util_hash.py +6 -6
- celestialflow-3.1.2/src/celestialflow/runtime/tools.py → celestialflow-3.1.4/src/celestialflow/runtime/util_queue.py +3 -3
- celestialflow-3.1.2/src/celestialflow/runtime/types.py → celestialflow-3.1.4/src/celestialflow/runtime/util_types.py +23 -37
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow/stage/__init__.py +5 -5
- celestialflow-3.1.4/src/celestialflow/stage/core_executor.py +814 -0
- celestialflow-3.1.2/src/celestialflow/stage/stage.py → celestialflow-3.1.4/src/celestialflow/stage/core_stage.py +54 -53
- celestialflow-3.1.2/src/celestialflow/stage/nodes.py → celestialflow-3.1.4/src/celestialflow/stage/core_stages.py +72 -59
- celestialflow-3.1.4/src/celestialflow/utils/util_benchmark.py +103 -0
- celestialflow-3.1.4/src/celestialflow/utils/util_clone.py +117 -0
- celestialflow-3.1.2/src/celestialflow/utils/collections.py → celestialflow-3.1.4/src/celestialflow/utils/util_collections.py +2 -3
- celestialflow-3.1.2/src/celestialflow/utils/debug.py → celestialflow-3.1.4/src/celestialflow/utils/util_debug.py +1 -1
- celestialflow-3.1.2/src/celestialflow/utils/format.py → celestialflow-3.1.4/src/celestialflow/utils/util_format.py +3 -3
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow/web/server.py +115 -48
- celestialflow-3.1.4/src/celestialflow/web/static/css/_colors.css +183 -0
- celestialflow-3.1.4/src/celestialflow/web/static/css/base.css +305 -0
- celestialflow-3.1.4/src/celestialflow/web/static/css/dashboard.css +368 -0
- celestialflow-3.1.4/src/celestialflow/web/static/css/errors.css +261 -0
- celestialflow-3.1.4/src/celestialflow/web/static/css/inject.css +638 -0
- celestialflow-3.1.4/src/celestialflow/web/static/favicon.ico +0 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/main.js +104 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_config.js +124 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_errors.js +131 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_history.js +123 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_injection.js +332 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_statuses.js +107 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_structure.js +127 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_summary.js +43 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/task_topology.js +53 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/utils.js +153 -0
- celestialflow-3.1.4/src/celestialflow/web/static/js/web_config.js +119 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/globals.d.ts +6 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/main.ts +125 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/task_errors.ts +147 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/task_history.ts +146 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/task_injection.ts +379 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/task_statuses.ts +149 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/task_structure.ts +149 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/task_summary.ts +54 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/task_topology.ts +62 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/utils.ts +169 -0
- celestialflow-3.1.4/src/celestialflow/web/static/ts/web_config.ts +144 -0
- celestialflow-3.1.4/src/celestialflow/web/templates/index.html +390 -0
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow.egg-info/PKG-INFO +21 -63
- celestialflow-3.1.4/src/celestialflow.egg-info/SOURCES.txt +77 -0
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow.egg-info/requires.txt +1 -2
- celestialflow-3.1.4/tests/test_executor.py +103 -0
- celestialflow-3.1.2/tests/test_nodes.py → celestialflow-3.1.4/tests/test_stages.py +26 -18
- celestialflow-3.1.2/src/celestialflow/persistence/__init__.py +0 -10
- celestialflow-3.1.2/src/celestialflow/persistence/fail.py +0 -117
- celestialflow-3.1.2/src/celestialflow/persistence/log.py +0 -326
- celestialflow-3.1.2/src/celestialflow/runtime/__init__.py +0 -11
- celestialflow-3.1.2/src/celestialflow/runtime/metrics.py +0 -158
- celestialflow-3.1.2/src/celestialflow/runtime/queue.py +0 -313
- celestialflow-3.1.2/src/celestialflow/stage/executor.py +0 -1103
- celestialflow-3.1.2/src/celestialflow.egg-info/SOURCES.txt +0 -44
- celestialflow-3.1.2/tests/test_executor.py +0 -121
- celestialflow-3.1.2/tests/test_graph.py +0 -219
- {celestialflow-3.1.2 → celestialflow-3.1.4}/setup.cfg +0 -0
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow/utils/__init__.py +0 -0
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow.egg-info/dependency_links.txt +0 -0
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow.egg-info/entry_points.txt +0 -0
- {celestialflow-3.1.2 → celestialflow-3.1.4}/src/celestialflow.egg-info/top_level.txt +0 -0
- {celestialflow-3.1.2 → celestialflow-3.1.4}/tests/test_structure.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: celestialflow
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.4
|
|
4
4
|
Summary: A flexible GRAPH-based task orchestration framework.
|
|
5
5
|
Author-email: Mr-xiaotian <mingxiaomingtian@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -15,14 +15,13 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
15
15
|
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
Requires-Dist: tqdm
|
|
18
|
-
Requires-Dist: loguru
|
|
19
18
|
Requires-Dist: fastapi
|
|
20
19
|
Requires-Dist: uvicorn
|
|
21
20
|
Requires-Dist: requests
|
|
22
21
|
Requires-Dist: networkx
|
|
23
22
|
Requires-Dist: redis
|
|
24
23
|
Requires-Dist: jinja2
|
|
25
|
-
Requires-Dist: celestialtree
|
|
24
|
+
Requires-Dist: celestialtree>=0.1.2
|
|
26
25
|
|
|
27
26
|
# CelestialFlow ——一个轻量级、可并行、基于图结构的 Python 任务调度框架
|
|
28
27
|
|
|
@@ -240,9 +239,8 @@ flowchart TD
|
|
|
240
239
|
|
|
241
240
|
| 依赖包 | 说明 |
|
|
242
241
|
| ----------------- | ---- |
|
|
243
|
-
| **Python ≥ 3.
|
|
242
|
+
| **Python ≥ 3.10** | 运行环境,建议使用 3.10 及以上版本 |
|
|
244
243
|
| **tqdm** | 控制台进度条显示,用于任务执行可视化 |
|
|
245
|
-
| **loguru** | 高性能日志系统,支持多进程安全输出 |
|
|
246
244
|
| **fastapi** | Web 服务接口框架(用于任务可视化与远程控制) |
|
|
247
245
|
| **uvicorn** | FastAPI 的高性能 ASGI 服务器 |
|
|
248
246
|
| **requests** | HTTP 客户端库,用于任务状态上报与远程调用 |
|
|
@@ -256,69 +254,29 @@ flowchart TD
|
|
|
256
254
|
<p align="center">
|
|
257
255
|
<img src="https://raw.githubusercontent.com/Mr-xiaotian/CelestialFlow/main/img/file_structure.svg" alt="FileStructure" />
|
|
258
256
|
<br/>
|
|
259
|
-
<em>celestial-flow 3.1.
|
|
257
|
+
<em>celestial-flow 3.1.4</em>
|
|
260
258
|
</p>
|
|
261
259
|
|
|
262
260
|
(该视图由我的另一个项目[CelestialVault](https://github.com/Mr-xiaotian/CelestialVault)中inst_file.FileTree.print_tree()生成。转换为图片则借助[Carbon](https://carbon.now.sh)。)
|
|
263
261
|
|
|
264
|
-
##
|
|
265
|
-
|
|
266
|
-
- 2021: 建立一个支持多线程与单线程处理函数的类
|
|
267
|
-
- 2023: 在GPT4帮助下添加多进程与携程运行模式
|
|
268
|
-
- 5/9/2024: 将原有的处理类抽象为节点, 添加TaskChain类, 可以线性连接多个节点, 并设定节点在Chain中的运行模式, 支持serial和process两种, 后者Chain所有节点同时运行
|
|
269
|
-
- 12/12/2024-12/16/2024: 在原有链式结构基础上允许节点有复数下级节点, 实现Tree结构; 将原有TaskChain改名为TaskTree
|
|
270
|
-
- 3/16/2025: 支持Web端任务完成情况可视化
|
|
271
|
-
- 6/9/2025: 支持节点拥有复数上级节点, 脱离纯Tree结构, 为之后循环图做准备
|
|
272
|
-
- 6/11/2025: 自[CelestialVault](https://github.com/Mr-xiaotian/CelestialVault)项目instances.inst_task迁出
|
|
273
|
-
- 6/12/2025: 支持循环图, 下级节点可指向上级节点
|
|
274
|
-
- 6/13/2025: 支持loop结构, 即节点可指向自己
|
|
275
|
-
- 6/14/2025: 支持forest结构, 即可有多个根节点
|
|
276
|
-
- 6/16/2025: 多轮评测后, 当前框架已支持完整有向图结构, 将TaskTree改名为TaskGraph
|
|
277
|
-
- 3.0.1: 上线Pypi, 可喜可贺
|
|
278
|
-
- 3.0.4: 新增一个抽象结构TaskQueue, 用于表示节点的所有"入边"与"出边"; 恢复未消费任务的保存功能
|
|
279
|
-
- 3.0.5: 删除原有的TaskRedisTransfer节点, 并增添三种新的redis交互节点TaskRedisSink TaskRedisSource TaskRedisAck, 用于跨语言 跨进程 跨设备处理任务; 并在Web页面添加展示拓扑信息的卡片
|
|
280
|
-
- 3.0.6: 添加对[CelestialTree](https://github.com/Mr-xiaotian/CelestialTree)系统的支持, 现在可以追踪单个任务的流向
|
|
281
|
-
- 3.0.7: 将TaskStage从TaskExecutor中单独抽出来作为一个子类; 增加新节点TaskRouter, 可以将传入的任务选择的传给不同的下游节点, 而不是进行广播
|
|
282
|
-
- 3.0.8: 在ctree逻辑上将"任务重试"事件后的"任务成功/失败/重试"事件视为因果关系, 而非之前的并行关系; 重构错误搜集部分逻辑; 修复大量3.0.6与3.07版本引入的bug; 优化部分log表现
|
|
283
|
-
- 3.0.9:
|
|
284
|
-
- 更新前端mermaid显示中部分节点图标;
|
|
285
|
-
- 对ctree_client进行匹配CelestialTree的大量修改;
|
|
286
|
-
- 将ctree_client移出为单独的project;
|
|
287
|
-
- 在前端中添加error_id的显示, 为之后显示provenance_tree做准备;
|
|
288
|
-
- 增加大量warning与error, 用于提醒不规范设置;
|
|
289
|
-
- 优化前后端中错误数据的传输方式, 在大量错误数据时减少内存消耗;
|
|
290
|
-
- 优化LogSinker中log队列的准入机制;
|
|
291
|
-
- 修改部分Bug;
|
|
292
|
-
- 3.1.0:
|
|
293
|
-
- 新增:
|
|
294
|
-
- 优化web端仪表盘页面的"总体状态摘要"卡片, 新增"总重复任务"与"总剩余市场", 后者由节点间拓扑关系计算而成, 后续还需要优化;
|
|
295
|
-
- 修复:
|
|
296
|
-
- 3.0.9版本下当web端与celestialflow运行端不同时, error数据无法传递的问题;
|
|
297
|
-
- 修复NullTaskReporter使用问题;
|
|
298
|
-
- 3.1.1:
|
|
299
|
-
- 新增:
|
|
300
|
-
- [Important] CelestialTree中引入grpc, 这大大减少了emit操作的耗时;
|
|
301
|
-
- [Important] 为TerminationSignal添加id, 并可以像task一样通过CelestialTree进行跟踪;
|
|
302
|
-
- 优化task_graph与task_executor的log分级, 现在默认为"SUCCESS"级;
|
|
303
|
-
- 将go_worker部分分离为单独project: [celestialflow-goworker]https://github.com/Mr-xiaotian/celestialflow-goworker
|
|
304
|
-
- 在readme中使用svg图片来展示文件夹结构;
|
|
305
|
-
- 优化全局剩余时间的计算;
|
|
306
|
-
- 优化部分代码结构;
|
|
307
|
-
- 修复:
|
|
308
|
-
- 修复节点剩余时间在小于1s时显示0的问题(这很影响判断);
|
|
309
|
-
- 在task_graph中使用"staged"模式时会报错的问题;
|
|
310
|
-
- 3.1.2:
|
|
262
|
+
## 版本日志(Version Log)
|
|
263
|
+
- 3.1.4:
|
|
311
264
|
- feat:
|
|
312
|
-
-
|
|
313
|
-
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
|
|
318
|
-
-
|
|
319
|
-
|
|
320
|
-
-
|
|
321
|
-
-
|
|
265
|
+
- 添加前端设置文件config.json, 包含主题(白天与黑夜), 刷新时间, 历史长度, 卡片种类, 仪表盘布局;
|
|
266
|
+
- 完善对termination_signal在ctree上的事件管理;
|
|
267
|
+
- 新添termination_*系日志, 同时优化部分原有日志;
|
|
268
|
+
- 在前端的错误数字上(包括单个stage的卡片与summary卡片)绑定跳转事件, 可以跳转到ErrorLog页面, 并显示对应的错误;
|
|
269
|
+
- 修复部分原有的文档错误, 并添加新的前端代码文档;
|
|
270
|
+
- refactor:
|
|
271
|
+
- fail_sinker.task_error中不必再传时间, 方法会自己补充;
|
|
272
|
+
- 将所有counter放入TaskMetrics管理, 断绝对TAskExecutor的调用依赖;
|
|
273
|
+
- 将run_*函数分离并移入TaskRunner类, 同时将pool管理也迁入;
|
|
274
|
+
- 将TaskQueue分离为更具体的TaskInQueue与TaskOutQueue, 同时TAskInQueue只接受一个MPQueue以避免原有的轮询逻辑, 减少CPU运算消耗;
|
|
275
|
+
- 前端代码换用ts;
|
|
276
|
+
- 重命名所有代码文件, 现在用core_与util_前缀来区分核心代码与辅助代码;
|
|
277
|
+
- 将history数据从status中移出, 使用单独的/api/*_history端口;
|
|
278
|
+
- fix:
|
|
279
|
+
- TaskRedisTransport节点在mermaid中没有展示为parallelogram;
|
|
322
280
|
|
|
323
281
|
## Star 历史趋势(Star History)
|
|
324
282
|
|
|
@@ -214,9 +214,8 @@ flowchart TD
|
|
|
214
214
|
|
|
215
215
|
| 依赖包 | 说明 |
|
|
216
216
|
| ----------------- | ---- |
|
|
217
|
-
| **Python ≥ 3.
|
|
217
|
+
| **Python ≥ 3.10** | 运行环境,建议使用 3.10 及以上版本 |
|
|
218
218
|
| **tqdm** | 控制台进度条显示,用于任务执行可视化 |
|
|
219
|
-
| **loguru** | 高性能日志系统,支持多进程安全输出 |
|
|
220
219
|
| **fastapi** | Web 服务接口框架(用于任务可视化与远程控制) |
|
|
221
220
|
| **uvicorn** | FastAPI 的高性能 ASGI 服务器 |
|
|
222
221
|
| **requests** | HTTP 客户端库,用于任务状态上报与远程调用 |
|
|
@@ -230,69 +229,29 @@ flowchart TD
|
|
|
230
229
|
<p align="center">
|
|
231
230
|
<img src="https://raw.githubusercontent.com/Mr-xiaotian/CelestialFlow/main/img/file_structure.svg" alt="FileStructure" />
|
|
232
231
|
<br/>
|
|
233
|
-
<em>celestial-flow 3.1.
|
|
232
|
+
<em>celestial-flow 3.1.4</em>
|
|
234
233
|
</p>
|
|
235
234
|
|
|
236
235
|
(该视图由我的另一个项目[CelestialVault](https://github.com/Mr-xiaotian/CelestialVault)中inst_file.FileTree.print_tree()生成。转换为图片则借助[Carbon](https://carbon.now.sh)。)
|
|
237
236
|
|
|
238
|
-
##
|
|
239
|
-
|
|
240
|
-
- 2021: 建立一个支持多线程与单线程处理函数的类
|
|
241
|
-
- 2023: 在GPT4帮助下添加多进程与携程运行模式
|
|
242
|
-
- 5/9/2024: 将原有的处理类抽象为节点, 添加TaskChain类, 可以线性连接多个节点, 并设定节点在Chain中的运行模式, 支持serial和process两种, 后者Chain所有节点同时运行
|
|
243
|
-
- 12/12/2024-12/16/2024: 在原有链式结构基础上允许节点有复数下级节点, 实现Tree结构; 将原有TaskChain改名为TaskTree
|
|
244
|
-
- 3/16/2025: 支持Web端任务完成情况可视化
|
|
245
|
-
- 6/9/2025: 支持节点拥有复数上级节点, 脱离纯Tree结构, 为之后循环图做准备
|
|
246
|
-
- 6/11/2025: 自[CelestialVault](https://github.com/Mr-xiaotian/CelestialVault)项目instances.inst_task迁出
|
|
247
|
-
- 6/12/2025: 支持循环图, 下级节点可指向上级节点
|
|
248
|
-
- 6/13/2025: 支持loop结构, 即节点可指向自己
|
|
249
|
-
- 6/14/2025: 支持forest结构, 即可有多个根节点
|
|
250
|
-
- 6/16/2025: 多轮评测后, 当前框架已支持完整有向图结构, 将TaskTree改名为TaskGraph
|
|
251
|
-
- 3.0.1: 上线Pypi, 可喜可贺
|
|
252
|
-
- 3.0.4: 新增一个抽象结构TaskQueue, 用于表示节点的所有"入边"与"出边"; 恢复未消费任务的保存功能
|
|
253
|
-
- 3.0.5: 删除原有的TaskRedisTransfer节点, 并增添三种新的redis交互节点TaskRedisSink TaskRedisSource TaskRedisAck, 用于跨语言 跨进程 跨设备处理任务; 并在Web页面添加展示拓扑信息的卡片
|
|
254
|
-
- 3.0.6: 添加对[CelestialTree](https://github.com/Mr-xiaotian/CelestialTree)系统的支持, 现在可以追踪单个任务的流向
|
|
255
|
-
- 3.0.7: 将TaskStage从TaskExecutor中单独抽出来作为一个子类; 增加新节点TaskRouter, 可以将传入的任务选择的传给不同的下游节点, 而不是进行广播
|
|
256
|
-
- 3.0.8: 在ctree逻辑上将"任务重试"事件后的"任务成功/失败/重试"事件视为因果关系, 而非之前的并行关系; 重构错误搜集部分逻辑; 修复大量3.0.6与3.07版本引入的bug; 优化部分log表现
|
|
257
|
-
- 3.0.9:
|
|
258
|
-
- 更新前端mermaid显示中部分节点图标;
|
|
259
|
-
- 对ctree_client进行匹配CelestialTree的大量修改;
|
|
260
|
-
- 将ctree_client移出为单独的project;
|
|
261
|
-
- 在前端中添加error_id的显示, 为之后显示provenance_tree做准备;
|
|
262
|
-
- 增加大量warning与error, 用于提醒不规范设置;
|
|
263
|
-
- 优化前后端中错误数据的传输方式, 在大量错误数据时减少内存消耗;
|
|
264
|
-
- 优化LogSinker中log队列的准入机制;
|
|
265
|
-
- 修改部分Bug;
|
|
266
|
-
- 3.1.0:
|
|
267
|
-
- 新增:
|
|
268
|
-
- 优化web端仪表盘页面的"总体状态摘要"卡片, 新增"总重复任务"与"总剩余市场", 后者由节点间拓扑关系计算而成, 后续还需要优化;
|
|
269
|
-
- 修复:
|
|
270
|
-
- 3.0.9版本下当web端与celestialflow运行端不同时, error数据无法传递的问题;
|
|
271
|
-
- 修复NullTaskReporter使用问题;
|
|
272
|
-
- 3.1.1:
|
|
273
|
-
- 新增:
|
|
274
|
-
- [Important] CelestialTree中引入grpc, 这大大减少了emit操作的耗时;
|
|
275
|
-
- [Important] 为TerminationSignal添加id, 并可以像task一样通过CelestialTree进行跟踪;
|
|
276
|
-
- 优化task_graph与task_executor的log分级, 现在默认为"SUCCESS"级;
|
|
277
|
-
- 将go_worker部分分离为单独project: [celestialflow-goworker]https://github.com/Mr-xiaotian/celestialflow-goworker
|
|
278
|
-
- 在readme中使用svg图片来展示文件夹结构;
|
|
279
|
-
- 优化全局剩余时间的计算;
|
|
280
|
-
- 优化部分代码结构;
|
|
281
|
-
- 修复:
|
|
282
|
-
- 修复节点剩余时间在小于1s时显示0的问题(这很影响判断);
|
|
283
|
-
- 在task_graph中使用"staged"模式时会报错的问题;
|
|
284
|
-
- 3.1.2:
|
|
237
|
+
## 版本日志(Version Log)
|
|
238
|
+
- 3.1.4:
|
|
285
239
|
- feat:
|
|
286
|
-
-
|
|
287
|
-
-
|
|
288
|
-
-
|
|
289
|
-
-
|
|
290
|
-
-
|
|
291
|
-
|
|
292
|
-
-
|
|
293
|
-
|
|
294
|
-
-
|
|
295
|
-
-
|
|
240
|
+
- 添加前端设置文件config.json, 包含主题(白天与黑夜), 刷新时间, 历史长度, 卡片种类, 仪表盘布局;
|
|
241
|
+
- 完善对termination_signal在ctree上的事件管理;
|
|
242
|
+
- 新添termination_*系日志, 同时优化部分原有日志;
|
|
243
|
+
- 在前端的错误数字上(包括单个stage的卡片与summary卡片)绑定跳转事件, 可以跳转到ErrorLog页面, 并显示对应的错误;
|
|
244
|
+
- 修复部分原有的文档错误, 并添加新的前端代码文档;
|
|
245
|
+
- refactor:
|
|
246
|
+
- fail_sinker.task_error中不必再传时间, 方法会自己补充;
|
|
247
|
+
- 将所有counter放入TaskMetrics管理, 断绝对TAskExecutor的调用依赖;
|
|
248
|
+
- 将run_*函数分离并移入TaskRunner类, 同时将pool管理也迁入;
|
|
249
|
+
- 将TaskQueue分离为更具体的TaskInQueue与TaskOutQueue, 同时TAskInQueue只接受一个MPQueue以避免原有的轮询逻辑, 减少CPU运算消耗;
|
|
250
|
+
- 前端代码换用ts;
|
|
251
|
+
- 重命名所有代码文件, 现在用core_与util_前缀来区分核心代码与辅助代码;
|
|
252
|
+
- 将history数据从status中移出, 使用单独的/api/*_history端口;
|
|
253
|
+
- fix:
|
|
254
|
+
- TaskRedisTransport节点在mermaid中没有展示为parallelogram;
|
|
296
255
|
|
|
297
256
|
## Star 历史趋势(Star History)
|
|
298
257
|
|
|
@@ -1,71 +1,75 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "celestialflow"
|
|
7
|
-
version = "3.1.
|
|
8
|
-
description = "A flexible GRAPH-based task orchestration framework."
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
license = { text = "MIT" }
|
|
11
|
-
authors = [{ name = "Mr-xiaotian", email = "mingxiaomingtian@gmail.com" }]
|
|
12
|
-
keywords = ["workflow", "task", "graph", "async", "CelestialFlow"]
|
|
13
|
-
requires-python = ">=3.10"
|
|
14
|
-
|
|
15
|
-
dependencies = [
|
|
16
|
-
"tqdm",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
[
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
[
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "celestialflow"
|
|
7
|
+
version = "3.1.4"
|
|
8
|
+
description = "A flexible GRAPH-based task orchestration framework."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
authors = [{ name = "Mr-xiaotian", email = "mingxiaomingtian@gmail.com" }]
|
|
12
|
+
keywords = ["workflow", "task", "graph", "async", "CelestialFlow"]
|
|
13
|
+
requires-python = ">=3.10"
|
|
14
|
+
|
|
15
|
+
dependencies = [
|
|
16
|
+
"tqdm",
|
|
17
|
+
"fastapi",
|
|
18
|
+
"uvicorn",
|
|
19
|
+
"requests",
|
|
20
|
+
"networkx",
|
|
21
|
+
"redis",
|
|
22
|
+
"jinja2",
|
|
23
|
+
"celestialtree>=0.1.2",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
classifiers = [
|
|
27
|
+
"Programming Language :: Python :: 3",
|
|
28
|
+
"License :: OSI Approved :: MIT License",
|
|
29
|
+
"Operating System :: OS Independent",
|
|
30
|
+
"Framework :: FastAPI",
|
|
31
|
+
"Topic :: Software Development :: Libraries",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
[project.urls]
|
|
35
|
+
"Homepage" = "https://github.com/Mr-xiaotian/CelestialFlow"
|
|
36
|
+
"Bug Tracker" = "https://github.com/Mr-xiaotian/CelestialFlow/issues"
|
|
37
|
+
|
|
38
|
+
[project.scripts]
|
|
39
|
+
celestialflow-web = "celestialflow.web.server:main_entry"
|
|
40
|
+
|
|
41
|
+
[tool.setuptools]
|
|
42
|
+
license-files = []
|
|
43
|
+
|
|
44
|
+
[tool.setuptools.package-data]
|
|
45
|
+
celestialflow = [
|
|
46
|
+
"web/templates/*.html",
|
|
47
|
+
"web/templates/**/*.html",
|
|
48
|
+
"web/static/*",
|
|
49
|
+
"web/static/**/*",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[tool.pytest.ini_options]
|
|
53
|
+
addopts = "-s"
|
|
54
|
+
log_cli = true
|
|
55
|
+
log_cli_level = "INFO"
|
|
56
|
+
log_cli_format = "%(asctime)s [%(levelname)s] %(message)s"
|
|
57
|
+
log_cli_date_format = "%Y-%m-%d %H:%M:%S"
|
|
58
|
+
|
|
59
|
+
filterwarnings = [
|
|
60
|
+
"ignore::DeprecationWarning",
|
|
61
|
+
"ignore::pytest.PytestDeprecationWarning",
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
asyncio_default_fixture_loop_scope = "function"
|
|
65
|
+
|
|
66
|
+
[dependency-groups]
|
|
67
|
+
dev = [
|
|
68
|
+
"build>=1.2.2.post1",
|
|
69
|
+
"twine>=6.1.0",
|
|
70
|
+
"pytest>=8.3.4",
|
|
71
|
+
"pytest-asyncio>=0.25.3",
|
|
72
|
+
"httpx>=0.28.1",
|
|
73
|
+
"python-dotenv>=1.2.2",
|
|
74
|
+
"black>=26.1.0",
|
|
75
|
+
]
|
|
@@ -3,7 +3,7 @@ from .stage import (
|
|
|
3
3
|
TaskExecutor,
|
|
4
4
|
TaskStage,
|
|
5
5
|
TaskSplitter,
|
|
6
|
-
|
|
6
|
+
TaskRedisTransport,
|
|
7
7
|
TaskRedisSource,
|
|
8
8
|
TaskRedisAck,
|
|
9
9
|
TaskRouter,
|
|
@@ -17,14 +17,15 @@ from .graph import (
|
|
|
17
17
|
TaskWheel,
|
|
18
18
|
TaskGrid,
|
|
19
19
|
)
|
|
20
|
-
from .
|
|
21
|
-
from .runtime.hash import make_hashable
|
|
22
|
-
from .utils.format import format_table
|
|
23
|
-
from .persistence.jsonl import (
|
|
20
|
+
from .persistence.util_jsonl import (
|
|
24
21
|
load_jsonl_logs,
|
|
25
22
|
load_task_by_stage,
|
|
26
23
|
load_task_by_error,
|
|
27
24
|
)
|
|
25
|
+
from .runtime.util_types import TerminationSignal
|
|
26
|
+
from .runtime.util_hash import make_hashable
|
|
27
|
+
from .utils.util_format import format_table
|
|
28
|
+
from .utils.util_benchmark import benchmark_graph, benchmark_executor
|
|
28
29
|
from .web.server import TaskWebServer
|
|
29
30
|
|
|
30
31
|
__all__ = [
|
|
@@ -38,7 +39,7 @@ __all__ = [
|
|
|
38
39
|
"TaskExecutor",
|
|
39
40
|
"TaskStage",
|
|
40
41
|
"TaskSplitter",
|
|
41
|
-
"
|
|
42
|
+
"TaskRedisTransport",
|
|
42
43
|
"TaskRedisSource",
|
|
43
44
|
"TaskRedisAck",
|
|
44
45
|
"TaskRouter",
|
|
@@ -49,4 +50,6 @@ __all__ = [
|
|
|
49
50
|
"load_task_by_error",
|
|
50
51
|
"make_hashable",
|
|
51
52
|
"format_table",
|
|
53
|
+
"benchmark_graph",
|
|
54
|
+
"benchmark_executor",
|
|
52
55
|
]
|