ny-sync 0.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.
@@ -0,0 +1,3 @@
1
+ include README.md
2
+ include requirements.txt
3
+ include run_dashboard.bat
ny_sync-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.4
2
+ Name: ny_sync
3
+ Version: 0.1.0
4
+ Summary: A Python SDK for AnySync: Distributed Token Bucket Rate Limiter
5
+ Home-page: https://github.com/djmin/ny_sync
6
+ Author: AnySync Team
7
+ Author-email: readerror000@outlook.com
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.7
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: redis>=4.0.0
14
+ Provides-Extra: dashboard
15
+ Requires-Dist: streamlit>=1.0.0; extra == "dashboard"
16
+ Requires-Dist: plotly>=5.0.0; extra == "dashboard"
17
+ Requires-Dist: pandas>=1.0.0; extra == "dashboard"
18
+ Dynamic: author
19
+ Dynamic: author-email
20
+ Dynamic: classifier
21
+ Dynamic: description
22
+ Dynamic: description-content-type
23
+ Dynamic: home-page
24
+ Dynamic: provides-extra
25
+ Dynamic: requires-dist
26
+ Dynamic: requires-python
27
+ Dynamic: summary
28
+
29
+ # NySync
30
+
31
+ > **Any Data, Any Source, Any Destination.**
32
+
33
+ NySync 是一个 **AI-First** 的数据同步与任务编排平台:用声明式任务把“任何数据源”持续、可靠地同步到“任何目的地”,并让 Agent 能够安全地生成、校验与运维这些任务。
34
+
35
+ ## 当前进展(Milestone)
36
+
37
+ - 已完成:分布式令牌桶限流(Python SDK,基于 Redis)
38
+ - 实现包含:LuaTokenBucket(默认)、NumericTokenBucket(GCRA)、StringTokenBucket(Slot-based)
39
+ - 支持 Dashboard 可视化与并发/批量场景验证
40
+ - 主线目标:平台层的作业管理、调度编排、执行引擎与观测体系
41
+
42
+ 快速开始(Python SDK):
43
+
44
+ ```python
45
+ import redis
46
+ from ny_sync import TokenBucket, RateUnit
47
+
48
+ r = redis.Redis(host="localhost", port=6379, db=0, decode_responses=True)
49
+ bucket = TokenBucket(r)
50
+
51
+ key = "demo"
52
+ capacity = 10
53
+ rate = 60 / RateUnit.MINUTE # 每分钟 60 个
54
+
55
+ allowed = bucket.allow(key, capacity, rate)
56
+ ```
57
+
58
+ ## 提供分布式令牌桶限流,基于 Redis 实现。内置三种实现:
59
+
60
+ - LuaTokenBucket(默认):并发能力强,适合通用场景
61
+ - NumericTokenBucket(GCRA):高吞吐批量场景
62
+ - StringTokenBucket(Slot-based):一个 Token 一个 String Key,便于峰值与历史可视化
63
+
64
+ ## 安装
65
+
66
+ ```bash
67
+ pip install any-sync
68
+ ```
69
+
70
+ ## 快速开始
71
+
72
+ ```python
73
+ import redis
74
+ from ny_sync import TokenBucket, RateUnit, RateLimit, RateLimitExceeded
75
+
76
+ r = redis.Redis(host="localhost", port=6379, db=0, decode_responses=True)
77
+
78
+ # 手动使用(TokenBucket 是 RedisTokenBucket 的简化别名)
79
+ bucket = TokenBucket(r)
80
+ key = "demo"
81
+ capacity = 10 # 桶容量10个
82
+ rate = 60 / RateUnit.MINUTE # 每分钟补充 60 个
83
+ allowed = bucket.allow(key, capacity, rate)
84
+
85
+
86
+ # 装饰器使用(RateLimit 是 RateLimitDecorator 的简化别名)
87
+ @RateLimit(r, "api", capacity, rate)
88
+ def my_api():
89
+ return "ok"
90
+ ```
91
+
92
+ ## 可视化 Dashboard
93
+
94
+ 运行简单的 Streamlit Dashboard:
95
+
96
+ ```bash
97
+ # Windows
98
+ c:\project\anysync\python_sdk\run_dashboard.bat
99
+ ```
100
+
101
+ ## 主要导出
102
+
103
+ - TokenBucket / RedisTokenBucket / LuaTokenBucket / NumericTokenBucket / StringTokenBucket
104
+ - RateUnit(SECOND / MINUTE / HOUR / DAY / WEEK)
105
+ - RateLimit / RateLimitExceeded
106
+
107
+ ## 许可证
108
+
109
+ MIT
@@ -0,0 +1,81 @@
1
+ # NySync
2
+
3
+ > **Any Data, Any Source, Any Destination.**
4
+
5
+ NySync 是一个 **AI-First** 的数据同步与任务编排平台:用声明式任务把“任何数据源”持续、可靠地同步到“任何目的地”,并让 Agent 能够安全地生成、校验与运维这些任务。
6
+
7
+ ## 当前进展(Milestone)
8
+
9
+ - 已完成:分布式令牌桶限流(Python SDK,基于 Redis)
10
+ - 实现包含:LuaTokenBucket(默认)、NumericTokenBucket(GCRA)、StringTokenBucket(Slot-based)
11
+ - 支持 Dashboard 可视化与并发/批量场景验证
12
+ - 主线目标:平台层的作业管理、调度编排、执行引擎与观测体系
13
+
14
+ 快速开始(Python SDK):
15
+
16
+ ```python
17
+ import redis
18
+ from ny_sync import TokenBucket, RateUnit
19
+
20
+ r = redis.Redis(host="localhost", port=6379, db=0, decode_responses=True)
21
+ bucket = TokenBucket(r)
22
+
23
+ key = "demo"
24
+ capacity = 10
25
+ rate = 60 / RateUnit.MINUTE # 每分钟 60 个
26
+
27
+ allowed = bucket.allow(key, capacity, rate)
28
+ ```
29
+
30
+ ## 提供分布式令牌桶限流,基于 Redis 实现。内置三种实现:
31
+
32
+ - LuaTokenBucket(默认):并发能力强,适合通用场景
33
+ - NumericTokenBucket(GCRA):高吞吐批量场景
34
+ - StringTokenBucket(Slot-based):一个 Token 一个 String Key,便于峰值与历史可视化
35
+
36
+ ## 安装
37
+
38
+ ```bash
39
+ pip install any-sync
40
+ ```
41
+
42
+ ## 快速开始
43
+
44
+ ```python
45
+ import redis
46
+ from ny_sync import TokenBucket, RateUnit, RateLimit, RateLimitExceeded
47
+
48
+ r = redis.Redis(host="localhost", port=6379, db=0, decode_responses=True)
49
+
50
+ # 手动使用(TokenBucket 是 RedisTokenBucket 的简化别名)
51
+ bucket = TokenBucket(r)
52
+ key = "demo"
53
+ capacity = 10 # 桶容量10个
54
+ rate = 60 / RateUnit.MINUTE # 每分钟补充 60 个
55
+ allowed = bucket.allow(key, capacity, rate)
56
+
57
+
58
+ # 装饰器使用(RateLimit 是 RateLimitDecorator 的简化别名)
59
+ @RateLimit(r, "api", capacity, rate)
60
+ def my_api():
61
+ return "ok"
62
+ ```
63
+
64
+ ## 可视化 Dashboard
65
+
66
+ 运行简单的 Streamlit Dashboard:
67
+
68
+ ```bash
69
+ # Windows
70
+ c:\project\anysync\python_sdk\run_dashboard.bat
71
+ ```
72
+
73
+ ## 主要导出
74
+
75
+ - TokenBucket / RedisTokenBucket / LuaTokenBucket / NumericTokenBucket / StringTokenBucket
76
+ - RateUnit(SECOND / MINUTE / HOUR / DAY / WEEK)
77
+ - RateLimit / RateLimitExceeded
78
+
79
+ ## 许可证
80
+
81
+ MIT
@@ -0,0 +1,37 @@
1
+ from .rate_limiter import (
2
+ RedisTokenBucket,
3
+ LuaTokenBucket,
4
+ NumericTokenBucket,
5
+ StringTokenBucket,
6
+ RateUnit
7
+ )
8
+
9
+ from .decorators import (
10
+ RateLimitDecorator,
11
+ RateLimitExceededError
12
+ )
13
+
14
+ # Aliases for simplicity
15
+ TokenBucket = RedisTokenBucket
16
+ StringBucket = StringTokenBucket
17
+ NumericBucket = NumericTokenBucket
18
+ RateLimit = RateLimitDecorator
19
+ RateLimitExceeded = RateLimitExceededError
20
+
21
+ __all__ = [
22
+ # Core Classes
23
+ "RedisTokenBucket",
24
+ "LuaTokenBucket",
25
+ "NumericTokenBucket",
26
+ "StringTokenBucket",
27
+ "RateUnit",
28
+ "RateLimitDecorator",
29
+ "RateLimitExceededError",
30
+
31
+ # Simple Aliases
32
+ "TokenBucket",
33
+ "StringBucket",
34
+ "NumericBucket",
35
+ "RateLimit",
36
+ "RateLimitExceeded"
37
+ ]