jettask 0.2.20__py3-none-any.whl → 0.2.24__py3-none-any.whl

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 (110) hide show
  1. jettask/__init__.py +4 -0
  2. jettask/cli.py +12 -8
  3. jettask/config/lua_scripts.py +37 -0
  4. jettask/config/nacos_config.py +1 -1
  5. jettask/core/app.py +313 -340
  6. jettask/core/container.py +4 -4
  7. jettask/{persistence → core}/namespace.py +93 -27
  8. jettask/core/task.py +16 -9
  9. jettask/core/unified_manager_base.py +136 -26
  10. jettask/db/__init__.py +67 -0
  11. jettask/db/base.py +137 -0
  12. jettask/{utils/db_connector.py → db/connector.py} +130 -26
  13. jettask/db/models/__init__.py +16 -0
  14. jettask/db/models/scheduled_task.py +196 -0
  15. jettask/db/models/task.py +77 -0
  16. jettask/db/models/task_run.py +85 -0
  17. jettask/executor/__init__.py +0 -15
  18. jettask/executor/core.py +76 -31
  19. jettask/executor/process_entry.py +29 -114
  20. jettask/executor/task_executor.py +4 -0
  21. jettask/messaging/event_pool.py +928 -685
  22. jettask/messaging/scanner.py +30 -0
  23. jettask/persistence/__init__.py +28 -103
  24. jettask/persistence/buffer.py +170 -0
  25. jettask/persistence/consumer.py +330 -249
  26. jettask/persistence/manager.py +304 -0
  27. jettask/persistence/persistence.py +391 -0
  28. jettask/scheduler/__init__.py +15 -3
  29. jettask/scheduler/{task_crud.py → database.py} +61 -57
  30. jettask/scheduler/loader.py +2 -2
  31. jettask/scheduler/{scheduler_coordinator.py → manager.py} +23 -6
  32. jettask/scheduler/models.py +14 -10
  33. jettask/scheduler/schedule.py +166 -0
  34. jettask/scheduler/scheduler.py +12 -11
  35. jettask/schemas/__init__.py +50 -1
  36. jettask/schemas/backlog.py +43 -6
  37. jettask/schemas/namespace.py +70 -19
  38. jettask/schemas/queue.py +19 -3
  39. jettask/schemas/responses.py +493 -0
  40. jettask/task/__init__.py +0 -2
  41. jettask/task/router.py +3 -0
  42. jettask/test_connection_monitor.py +1 -1
  43. jettask/utils/__init__.py +7 -5
  44. jettask/utils/db_init.py +8 -4
  45. jettask/utils/namespace_dep.py +167 -0
  46. jettask/utils/queue_matcher.py +186 -0
  47. jettask/utils/rate_limit/concurrency_limiter.py +7 -1
  48. jettask/utils/stream_backlog.py +1 -1
  49. jettask/webui/__init__.py +0 -1
  50. jettask/webui/api/__init__.py +4 -4
  51. jettask/webui/api/alerts.py +806 -71
  52. jettask/webui/api/example_refactored.py +400 -0
  53. jettask/webui/api/namespaces.py +390 -45
  54. jettask/webui/api/overview.py +300 -54
  55. jettask/webui/api/queues.py +971 -267
  56. jettask/webui/api/scheduled.py +1249 -56
  57. jettask/webui/api/settings.py +129 -7
  58. jettask/webui/api/workers.py +442 -0
  59. jettask/webui/app.py +46 -2329
  60. jettask/webui/middleware/__init__.py +6 -0
  61. jettask/webui/middleware/namespace_middleware.py +135 -0
  62. jettask/webui/services/__init__.py +146 -0
  63. jettask/webui/services/heartbeat_service.py +251 -0
  64. jettask/webui/services/overview_service.py +60 -51
  65. jettask/webui/services/queue_monitor_service.py +426 -0
  66. jettask/webui/services/redis_monitor_service.py +87 -0
  67. jettask/webui/services/settings_service.py +174 -111
  68. jettask/webui/services/task_monitor_service.py +222 -0
  69. jettask/webui/services/timeline_pg_service.py +452 -0
  70. jettask/webui/services/timeline_service.py +189 -0
  71. jettask/webui/services/worker_monitor_service.py +467 -0
  72. jettask/webui/utils/__init__.py +11 -0
  73. jettask/webui/utils/time_utils.py +122 -0
  74. jettask/worker/lifecycle.py +8 -2
  75. {jettask-0.2.20.dist-info → jettask-0.2.24.dist-info}/METADATA +1 -1
  76. jettask-0.2.24.dist-info/RECORD +142 -0
  77. jettask/executor/executor.py +0 -338
  78. jettask/persistence/backlog_monitor.py +0 -567
  79. jettask/persistence/base.py +0 -2334
  80. jettask/persistence/db_manager.py +0 -516
  81. jettask/persistence/maintenance.py +0 -81
  82. jettask/persistence/message_consumer.py +0 -259
  83. jettask/persistence/models.py +0 -49
  84. jettask/persistence/offline_recovery.py +0 -196
  85. jettask/persistence/queue_discovery.py +0 -215
  86. jettask/persistence/task_persistence.py +0 -218
  87. jettask/persistence/task_updater.py +0 -583
  88. jettask/scheduler/add_execution_count.sql +0 -11
  89. jettask/scheduler/add_priority_field.sql +0 -26
  90. jettask/scheduler/add_scheduler_id.sql +0 -25
  91. jettask/scheduler/add_scheduler_id_index.sql +0 -10
  92. jettask/scheduler/make_scheduler_id_required.sql +0 -28
  93. jettask/scheduler/migrate_interval_seconds.sql +0 -9
  94. jettask/scheduler/performance_optimization.sql +0 -45
  95. jettask/scheduler/run_scheduler.py +0 -186
  96. jettask/scheduler/schema.sql +0 -84
  97. jettask/task/task_executor.py +0 -318
  98. jettask/webui/api/analytics.py +0 -323
  99. jettask/webui/config.py +0 -90
  100. jettask/webui/models/__init__.py +0 -3
  101. jettask/webui/models/namespace.py +0 -63
  102. jettask/webui/namespace_manager/__init__.py +0 -10
  103. jettask/webui/namespace_manager/multi.py +0 -593
  104. jettask/webui/namespace_manager/unified.py +0 -193
  105. jettask/webui/run.py +0 -46
  106. jettask-0.2.20.dist-info/RECORD +0 -145
  107. {jettask-0.2.20.dist-info → jettask-0.2.24.dist-info}/WHEEL +0 -0
  108. {jettask-0.2.20.dist-info → jettask-0.2.24.dist-info}/entry_points.txt +0 -0
  109. {jettask-0.2.20.dist-info → jettask-0.2.24.dist-info}/licenses/LICENSE +0 -0
  110. {jettask-0.2.20.dist-info → jettask-0.2.24.dist-info}/top_level.txt +0 -0
@@ -1,193 +0,0 @@
1
- """
2
- 统一的数据消费者管理器
3
- 自动识别单命名空间和多命名空间模式
4
- """
5
- import asyncio
6
- import logging
7
- import multiprocessing
8
- from typing import Dict, Optional, Set
9
- from jettask.core.unified_manager_base import UnifiedManagerBase
10
- from .multi import NamespaceConsumerProcess
11
-
12
- logger = logging.getLogger(__name__)
13
-
14
-
15
- class UnifiedConsumerManager(UnifiedManagerBase):
16
- """
17
- 统一的消费者管理器
18
- 继承自 UnifiedManagerBase,实现消费者特定的逻辑
19
- """
20
-
21
- def __init__(self,
22
- task_center_url: str,
23
- check_interval: int = 30,
24
- debug: bool = False):
25
- """
26
- 初始化消费者管理器
27
-
28
- Args:
29
- task_center_url: 任务中心URL
30
- check_interval: 命名空间检测间隔(秒)
31
- debug: 是否启用调试模式
32
- """
33
- super().__init__(task_center_url, check_interval, debug)
34
-
35
- # 消费者进程管理
36
- self.consumer_processes: Dict[str, NamespaceConsumerProcess] = {}
37
- self.known_namespaces: Set[str] = set()
38
-
39
- @property
40
- def processes(self):
41
- """提供对外的进程访问接口"""
42
- return self.consumer_processes
43
-
44
- async def run_single_namespace(self, namespace_name: str):
45
- """
46
- 运行单命名空间模式
47
-
48
- Args:
49
- namespace_name: 命名空间名称
50
- """
51
- logger.info(f"启动单命名空间消费者: {namespace_name}")
52
-
53
- # 获取命名空间配置
54
- namespaces = await self.fetch_namespaces_info({namespace_name})
55
-
56
- if not namespaces:
57
- logger.error(f"未找到命名空间配置: {namespace_name}")
58
- return
59
-
60
- ns_info = namespaces[0]
61
-
62
- # 创建并启动消费进程
63
- consumer = NamespaceConsumerProcess(ns_info)
64
- consumer.start()
65
- self.consumer_processes[namespace_name] = consumer
66
-
67
- try:
68
- # 保持运行,定期检查进程状态
69
- while self.running:
70
- await asyncio.sleep(10)
71
-
72
- # 检查进程是否存活
73
- if not consumer.is_alive():
74
- logger.warning(f"命名空间 {namespace_name} 的消费进程已停止,尝试重启")
75
- consumer.start()
76
- except asyncio.CancelledError:
77
- logger.info("收到取消信号")
78
-
79
- async def run_multi_namespace(self, namespace_names: Optional[Set[str]]):
80
- """
81
- 运行多命名空间模式
82
-
83
- Args:
84
- namespace_names: 目标命名空间集合,None表示所有命名空间
85
- """
86
- logger.info("启动多命名空间消费者管理")
87
-
88
- # 获取初始命名空间配置
89
- namespaces = await self.fetch_namespaces_info(namespace_names)
90
-
91
- # 启动每个命名空间的消费者
92
- for ns_info in namespaces:
93
- try:
94
- self._start_namespace_consumer(ns_info)
95
- self.known_namespaces.add(ns_info['name'])
96
- except Exception as e:
97
- logger.error(f"启动命名空间 {ns_info['name']} 的消费者失败: {e}")
98
-
99
- # 创建并发任务
100
- try:
101
- health_check_task = asyncio.create_task(self._health_check_loop())
102
- namespace_check_task = asyncio.create_task(self._namespace_check_loop())
103
-
104
- # 等待任一任务完成或出错
105
- done, pending = await asyncio.wait(
106
- [health_check_task, namespace_check_task],
107
- return_when=asyncio.FIRST_EXCEPTION
108
- )
109
-
110
- # 取消所有未完成的任务
111
- for task in pending:
112
- task.cancel()
113
-
114
- except asyncio.CancelledError:
115
- logger.info("收到取消信号")
116
-
117
- def _start_namespace_consumer(self, namespace_info: dict):
118
- """启动单个命名空间的消费者"""
119
- name = namespace_info['name']
120
-
121
- # 如果已存在,先停止
122
- if name in self.consumer_processes:
123
- self.consumer_processes[name].stop()
124
-
125
- # 创建并启动新进程
126
- consumer = NamespaceConsumerProcess(namespace_info)
127
- consumer.start()
128
- self.consumer_processes[name] = consumer
129
- logger.info(f"启动命名空间 {name} 的消费进程")
130
-
131
- async def _health_check_loop(self):
132
- """健康检查循环"""
133
- while self.running:
134
- try:
135
- await asyncio.sleep(30) # 每30秒检查一次
136
-
137
- # 检查所有消费进程的健康状态
138
- for name, consumer in list(self.consumer_processes.items()):
139
- if not consumer.is_alive():
140
- logger.warning(f"命名空间 {name} 的消费进程已停止,尝试重启")
141
-
142
- # 重新获取配置并重启
143
- namespaces = await self.fetch_namespaces_info({name})
144
- if namespaces:
145
- self._start_namespace_consumer(namespaces[0])
146
- else:
147
- logger.error(f"无法获取命名空间 {name} 的配置")
148
-
149
- except Exception as e:
150
- logger.error(f"健康检查错误: {e}")
151
-
152
- async def _namespace_check_loop(self):
153
- """命名空间检测循环(动态添加/移除)"""
154
- while self.running:
155
- try:
156
- await asyncio.sleep(self.check_interval)
157
-
158
- # 获取当前所有命名空间
159
- current_namespaces = await self.fetch_namespaces_info()
160
- current_names = {ns['name'] for ns in current_namespaces}
161
-
162
- # 检测新增的命名空间
163
- new_names = current_names - self.known_namespaces
164
- for name in new_names:
165
- logger.info(f"检测到新命名空间: {name}")
166
- ns_info = next(ns for ns in current_namespaces if ns['name'] == name)
167
- self._start_namespace_consumer(ns_info)
168
- self.known_namespaces.add(name)
169
-
170
- # 检测删除的命名空间
171
- removed_names = self.known_namespaces - current_names
172
- for name in removed_names:
173
- logger.info(f"检测到命名空间已删除: {name}")
174
- if name in self.consumer_processes:
175
- self.consumer_processes[name].stop()
176
- del self.consumer_processes[name]
177
- self.known_namespaces.discard(name)
178
-
179
- except Exception as e:
180
- logger.error(f"命名空间检测错误: {e}")
181
-
182
- async def cleanup(self):
183
- """清理资源"""
184
- logger.info("停止所有消费进程")
185
-
186
- for name, consumer in self.consumer_processes.items():
187
- try:
188
- consumer.stop()
189
- logger.info(f"停止命名空间 {name} 的消费进程")
190
- except Exception as e:
191
- logger.error(f"停止命名空间 {name} 的消费进程失败: {e}")
192
-
193
- self.consumer_processes.clear()
jettask/webui/run.py DELETED
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env python
2
- """
3
- Jettask WebUI Runner
4
-
5
- Usage:
6
- python -m jettask.webui.run [--host HOST] [--port PORT] [--redis REDIS_URL]
7
- """
8
-
9
- import argparse
10
- import sys
11
- import os
12
- sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
13
-
14
- from jettask.webui.app import app, monitor
15
- import uvicorn
16
-
17
- def main():
18
- parser = argparse.ArgumentParser(description="Jettask Monitor WebUI")
19
- parser.add_argument("--host", default="0.0.0.0", help="Host to bind to (default: 0.0.0.0)")
20
- parser.add_argument("--port", type=int, default=8000, help="Port to bind to (default: 8000)")
21
- parser.add_argument("--redis", default="redis://localhost:6379", help="Redis URL (default: redis://localhost:6379)")
22
- parser.add_argument("--prefix", default="jettask", help="Redis key prefix (default: jettask)")
23
-
24
- args = parser.parse_args()
25
-
26
- # 更新Redis连接
27
- monitor.redis_url = args.redis
28
- monitor.redis_prefix = args.prefix
29
-
30
- print(f"Starting Jettask Monitor WebUI...")
31
- print(f"Redis URL: {args.redis}")
32
- print(f"Redis Prefix: {args.prefix}")
33
- print(f"Server: http://{args.host}:{args.port}")
34
- print(f"Visit http://localhost:{args.port} in your browser")
35
-
36
- # 运行服务器
37
- uvicorn.run(
38
- "jettask.webui.app:app",
39
- host=args.host,
40
- port=args.port,
41
- log_level="info",
42
- reload=True
43
- )
44
-
45
- if __name__ == "__main__":
46
- main()
@@ -1,145 +0,0 @@
1
- jettask/__init__.py,sha256=cqedpoKBAUBpyComnKOJYNSbnqdry3pijO1sdPPXyH4,1885
2
- jettask/cli.py,sha256=6DEtMz8ZHgROx7rZO_xKa_Uva4DM1x8r-ZboFDUTgMc,38430
3
- jettask/exceptions.py,sha256=aQTUpiF2ftiZwGORUHXatAKbDEzptUf6iP7ZOXBQ3tQ,1971
4
- jettask/test_connection_monitor.py,sha256=KpmmMdDpeYM_rYACMHUdruNb4Xc8DZCUNTSuBVYIm-s,2195
5
- jettask/config/__init__.py,sha256=gCfoHVfTWIRPbtY1-iE4ydf2lfOmEwTU3EoSJ7NbLIU,273
6
- jettask/config/config.py,sha256=YdResg9uUD1rbmoumoIE-FkhMZ_skoRLgTlUjkLEEzQ,7111
7
- jettask/config/constants.py,sha256=rw06U4WPSFk6f80blC0ebkqnPUS_eteKQesTSBXKn6A,7028
8
- jettask/config/env_loader.py,sha256=P2uO63mAHfhu9Pqa_Hh0JKWmeFDptudSHgBI-fyr0sA,10558
9
- jettask/config/lua_scripts.py,sha256=CDRLFsoLaEInBgS1ScfLEgJo4yj5q64316TCV_Yupmo,4835
10
- jettask/config/nacos_config.py,sha256=6SUq5kAnqapQFoewZzrveDOp5EmtR9ie6Deh5ObbuQE,19690
11
- jettask/config/performance.py,sha256=bOdLEskfB_6cRfS10IRgmtKEsJw_CaIZsPHbXxaHwbU,5686
12
- jettask/config/task_center.py,sha256=dJ9UkWRR1kulHFhfSVXmT_bM-N7yEMJdp0JylUkrLZ4,2062
13
- jettask/core/__init__.py,sha256=3qnUjllxsvy9gqJEKnJbQeJcSEmxdWUwwzumdJG5vKI,198
14
- jettask/core/app.py,sha256=pw1SCDBYXMr0flgJ0W2u3fDOXGJBuX5ac9148xVt3UA,106202
15
- jettask/core/app_importer.py,sha256=04wRDCp5NFNiDkDhMOM7CdaHS_0b0cYylnYpXie8fwM,11018
16
- jettask/core/container.py,sha256=3jCKcQCw2quuBj0C2UBScxgJhm_cqxSwaPalnixCQ7M,18132
17
- jettask/core/context.py,sha256=XI4Q1s75NIWImcrHIkCLgGo_kpuJIk8MlBoNIJuEfF0,993
18
- jettask/core/enums.py,sha256=ufXI5OcGZoOSbLEyAWtnkZVO-LcqNbIOygyjLLa6ce8,4632
19
- jettask/core/message.py,sha256=WDOY8kvoV6at4MsIP01c3GJmIwHvRnUHimli6NKcw8w,4340
20
- jettask/core/retry.py,sha256=lX56Z0fvKjEhVbYPHYdoN-W4XUPVplHlfIOupBylEeI,10711
21
- jettask/core/task.py,sha256=AVd7b8d9l9wF6cYlL1BeJw6jMIv3EK0xntXppfI0qyM,5200
22
- jettask/core/unified_manager_base.py,sha256=_6ob5LOQfW6OCZr_UydebIqtMB4AjumdTWw9pE4bEss,12054
23
- jettask/executor/__init__.py,sha256=OGYeG7KSyvo7zrp4VAyTQNNfp0r5TVWkmfb4ZfegyL0,1033
24
- jettask/executor/core.py,sha256=L18LPMRmf_B4QbwQMGj7fZysf4LMFrJ_ZFb0o9hpH3s,25299
25
- jettask/executor/executor.py,sha256=TpckdygPpku1Fl1fN3fqP4IH50SXkA-0U7-J0IZHjr8,13591
26
- jettask/executor/orchestrator.py,sha256=DS5dYnYnp7sISLb5hLBcPNhP-Tqvd5NxhoBE-4iWxRQ,9986
27
- jettask/executor/process_entry.py,sha256=r3t1WhGZdGrQPVdZ_HcEjYreZcejlmyT26-MU0udI5E,22221
28
- jettask/executor/task_executor.py,sha256=muWd6K9WLYkbDBt4c7gdUNvAfg9g3hw_Xa4y2OqdeFU,11110
29
- jettask/messaging/__init__.py,sha256=hWv1p5kmud8nTbx-KceKkmaYbvYWhzJWNR8OzTvoRP0,1961
30
- jettask/messaging/event_pool.py,sha256=Ns2TZ_Zb5OdVAnROtogjKYbahwjBZapfUgqWFgSIXmo,109540
31
- jettask/messaging/reader.py,sha256=hlOYzU1LJrm7OhKb5iBrUjqHjsN3sN5FGKYHLiHGHes,17556
32
- jettask/messaging/registry.py,sha256=wG6SvyoCFMDggGd_SaDlLKaBcUPWzlblcGLMRhJwx90,10290
33
- jettask/messaging/scanner.py,sha256=bHK0W6KgZWne6S6yyyMoyBzRiEdJec0EsJsxo0oxG50,14336
34
- jettask/messaging/sender.py,sha256=cz98GiSMQhKxUyEkPmOHUIG78GFMW_f-P4j-KUCVMrE,10051
35
- jettask/messaging/pg_consumer/pg_consumer_v2.py,sha256=ajd6ZM_HY9YWK_I5BNbGuWxNqSS892d3ZzvDlTSQgwc,16211
36
- jettask/messaging/pg_consumer/sql_utils.py,sha256=dZM_8kIzUmRq0me4yLwb3UeoDvIVKJdIc9VNP1nbS0E,6461
37
- jettask/messaging/pg_consumer/sql/add_execution_time_field.sql,sha256=z2Jx-0uG-IW5RsTGxcLFu2_BcMReluEptMJWB6Qrj08,1184
38
- jettask/messaging/pg_consumer/sql/create_new_tables.sql,sha256=layb08_MFGVSE-NQEcjlQBklZ307JtJaccrnqkcj7Vg,6566
39
- jettask/messaging/pg_consumer/sql/create_tables_v3.sql,sha256=ZwBjxKWU6imWACoWMCIACLsYUPiPep9WmJsdIjI2a58,8173
40
- jettask/messaging/pg_consumer/sql/migrate_to_new_structure.sql,sha256=elhObWvbtqAhb4osJC6D5JhxcOxhGJgIBqx4ItB_xO8,5716
41
- jettask/messaging/pg_consumer/sql/modify_time_fields.sql,sha256=mRfoXbP9iXbAJBj-xNume8-4AV_UPQcBALNUqEf3aKw,2572
42
- jettask/persistence/__init__.py,sha256=StmZ-mbA2Cj8W3LbpUnK7v-3RIgVBRHRcX03h7TlM74,3307
43
- jettask/persistence/backlog_monitor.py,sha256=2ifGlRhYODQPkZ-T4O8RXfQDH-6jg6MlO_9ycqAJk1Y,28213
44
- jettask/persistence/base.py,sha256=AZaOJWIuWsShPtqxYVdDtuZ7ThCBcCyUtGQyNSprotk,115207
45
- jettask/persistence/consumer.py,sha256=qtAHXffGelXAKvsAGK2x_G-1qMnohUxKhCIr1PoX0lQ,10816
46
- jettask/persistence/db_manager.py,sha256=ZboNUSWaXMuvz9TCJXkhVCxi2IJu7LVFU59PDVPVh_k,17623
47
- jettask/persistence/maintenance.py,sha256=vJKaxYrIyfFbaInMFIywIk-MOOiLjileNrvUkOQ7r0Q,2470
48
- jettask/persistence/message_consumer.py,sha256=MIKXOmYq04He2xlKfV2mReqsTH_Sd4XiCdPi29zqIio,10101
49
- jettask/persistence/models.py,sha256=QHYqU_6X5mTDFW_DA1aFQJ6kdmFRgVs4shqr7RJUXzk,2026
50
- jettask/persistence/namespace.py,sha256=eJ9jbjif0AZLddHJ5J3ZR79eosi96daezqi_p_Yl7AU,24445
51
- jettask/persistence/offline_recovery.py,sha256=yWFjHGxXXRalw0pFBPxBuU_CG6OliU3f-e7mnEljOLs,7752
52
- jettask/persistence/queue_discovery.py,sha256=BieCEwL0kKJgMi56Hyhjc4Qtw5W5tooSD-9ZIaL9DQw,8703
53
- jettask/persistence/task_persistence.py,sha256=JL05gxNY-UjnFGWA5OghAzoxTiqcft8ZFkJap15wig4,8943
54
- jettask/persistence/task_updater.py,sha256=7_bxLwTAiWHcxbjeTQz5-5_M8HZJxrn13v9Fltooq18,26944
55
- jettask/scheduler/__init__.py,sha256=zWTOVfRhi-icqlXLEzkQo28M1XGQky6UwdAqCCd5LEs,373
56
- jettask/scheduler/add_execution_count.sql,sha256=x4jBsOFGj4JvEd-Ene3OhbR5QCKh5rv8dF01_qLSeE8,383
57
- jettask/scheduler/add_priority_field.sql,sha256=z9S10u2D2eekVqB8xOAtDD4Rw1Ey497cmDL4pN2MgB0,915
58
- jettask/scheduler/add_scheduler_id.sql,sha256=uDPSnYVjGE75LcOMKuT2kMEbCPW1JEbDq0uMqmN68aQ,818
59
- jettask/scheduler/add_scheduler_id_index.sql,sha256=xaY4uXa5QitIEgx4tcDqh1SRZ1NIZXuq5NtQQH_4Liw,471
60
- jettask/scheduler/loader.py,sha256=w6tQXJPRap0GRbT2lzzH4J3oG8FBWxA7B-0iNKBXR7s,8815
61
- jettask/scheduler/make_scheduler_id_required.sql,sha256=ksZ8rA7cAobrcQk3t93CrTePE2G40KQNESqA9WyPF50,854
62
- jettask/scheduler/migrate_interval_seconds.sql,sha256=40MSij1-YsOX7mQU958v7Qsse6NCId0R6NkZEjeWr-8,391
63
- jettask/scheduler/models.py,sha256=Mv-csKjsrYp4nI2H6IldCh6avu-9ke5YTfyufhlYjKI,7376
64
- jettask/scheduler/performance_optimization.sql,sha256=sXa5dh4DAAgjj8CsfByjCePcAXtGnxKwwPyMgbMbG2I,1733
65
- jettask/scheduler/run_scheduler.py,sha256=ptJqiNRvQ7FjrHKEHxpjGjzY497ZlCtsdzbqfLE1jcM,6307
66
- jettask/scheduler/scheduler.py,sha256=Fg6o11gsfkLntlClczCgbutcjCaYLGQdoTCMJvZ1Ows,27765
67
- jettask/scheduler/scheduler_coordinator.py,sha256=lDBc_as3Zge6uaQ45s-t4ADlFXrm1zoZT4plpsQXj18,12034
68
- jettask/scheduler/schema.sql,sha256=iBGUrsMYv9_FQCr_0b5DC-XFUXOaLIjnwWH-yvy4LdM,4109
69
- jettask/scheduler/task_crud.py,sha256=atbDUwlW5NmzrEx63FtKcr508qWfSja5pcE8NDIdo_U,26508
70
- jettask/schemas/__init__.py,sha256=YtyBjdLtZCceqmeVohlykFdgl5xtF_w9jtRmBfMRlqk,3170
71
- jettask/schemas/alert.py,sha256=Od29QjDrnLN1Tw_F2rPFSGsqRvbBcO2hf1d8GO1_WEQ,4958
72
- jettask/schemas/backlog.py,sha256=Qxl5I2cVI1ek1JujLl8I55IFINpXZr0Kbd1WWoyyRQg,5493
73
- jettask/schemas/common.py,sha256=e1lrLnOpxKT25FH7QnDQy38Qj4SGqd_cwHvRObTuRZw,6038
74
- jettask/schemas/monitoring.py,sha256=zPfNv6YXw3uufj61PseQTaQkpwa9azgsnCGUaF4HNUk,8084
75
- jettask/schemas/namespace.py,sha256=0KZC2V--mmMIxzS7Yn2P4ue6lo9Ui0HGcez8gfNK8Vo,8625
76
- jettask/schemas/queue.py,sha256=uier_qvrJWiZYh6m1rWM84mBjoKS6DjABM0WBTu9ToM,3968
77
- jettask/schemas/scheduled_task.py,sha256=MPAXvDeqmyQTWhL31yS94mRuzJWOV4njukp6BQrX6K4,7130
78
- jettask/schemas/schema.sql,sha256=IY-vLzj3TYoR4p51ChLuSxzo4KU1PQNFNDutc7p0nHg,4490
79
- jettask/schemas/task.py,sha256=niW2F_84HvstAjX3vo2pZswoRwMCF3DIoONuHwWNwtk,3172
80
- jettask/task/__init__.py,sha256=nECqS7nlNL3lDysCRwnlISYCd-vGoITyhaDrtcWXEos,306
81
- jettask/task/router.py,sha256=jJlf0N84CEoTWZSF-LHyU-kGVPFvAmfd7kksJpDZz0M,5731
82
- jettask/task/task_executor.py,sha256=lunxXHKM9mg5Sf1yD-ViQ-3DAFqFRiPDo7VWca6KTB8,9848
83
- jettask/task/task_registry.py,sha256=HYq6S9XWvavhy7UJeOGQSTR5LF0V_vyACcZ12yIMS68,7987
84
- jettask/task/task_center/__init__.py,sha256=Ed_D427tD59wTeqfbjckB-qKrCPnRLuzWovpQRW9uFs,132
85
- jettask/task/task_center/client.py,sha256=BcJOaKAeUKDl75GQzoQdBkZdBiC4gPxLrNa5VbKC86I,8537
86
- jettask/utils/__init__.py,sha256=k7ELbxwRcDOv_tiHzVhOPce00frVp1HthYE7_b_1tw4,898
87
- jettask/utils/backlog_collector.py,sha256=U3_TGHtcD4CbKOyFkbOShht8wkEeCwJ38QiZTvDgEn0,2523
88
- jettask/utils/db_connector.py,sha256=5g4JbBW3JEwj6glZuUYW7WNzBGfnoUz5EPzSatSdsVY,59258
89
- jettask/utils/db_init.py,sha256=Jdxjnt_VVvXD2f-oXvuNsfu2i8G9eMFs5fbpILjXCi8,15363
90
- jettask/utils/error_handler.py,sha256=9iYHCInUkEkP9o07dUgPxQr4aWqR5FUhnNWLgB0TEqM,2794
91
- jettask/utils/exception_hook.py,sha256=Fp0m71_jjmmZvyoELARSsPIvSVPCmMQMVC1FxMFOoHQ,1765
92
- jettask/utils/file_watcher.py,sha256=r3Mgekb_5sOssDrnFBCbbyvpWkwD2ZPA_j22ztzRCT0,1207
93
- jettask/utils/helpers.py,sha256=uTdyRFZsdwSQzuEcNoGgADuVnHaDEYq6JQP6zVxAj04,3368
94
- jettask/utils/logger.py,sha256=PcZgUtx7I9pe90Y8WgPQtKhMefd1oQ14pgUlKCFpCXo,843
95
- jettask/utils/redis_monitor.py,sha256=2l6fF2qAtctS9HUaEV3acJMJ5zhkvT4iygJGhGBCoKw,3660
96
- jettask/utils/serializer.py,sha256=Omnnbpp9FuRDugqan2QK75kVV91Rv07kN-hzqCC_3G4,856
97
- jettask/utils/stream_backlog.py,sha256=2v491i9t2qqqgDIVr2iAVSRhSZgPm0q94VInzXeiQY4,15977
98
- jettask/utils/task_logger.py,sha256=kauCgiDDzhuge3wk-BXR_KwytOfmrrVBKe1S4XUWBXU,13628
99
- jettask/utils/time_sync.py,sha256=DcZWboLKa9DwyQgDGGZGNLrQrMRVaJXJLk0xCDUW0B4,5209
100
- jettask/utils/traceback_filter.py,sha256=2svLo5_OoosAbS08UpceeWtjSKkdx-Fp6U-ysJQkroY,3025
101
- jettask/utils/rate_limit/__init__.py,sha256=Ahl96s0BqSofOIsQUIHfc2QpO46GezjtLXC7QzOFpKs,810
102
- jettask/utils/rate_limit/concurrency_limiter.py,sha256=p43f-RuGupb2mSc3PJ1JWYj5aihQqk4h5LA0BZyG880,27390
103
- jettask/utils/rate_limit/config.py,sha256=ChOQ2AWUBMbq3lTImYZ59UBwDPAetJ3UcV0WuhHPUgY,3862
104
- jettask/utils/rate_limit/limiter.py,sha256=itH_APz7m5qBntJtlfF120OvkD1N7hKuiwPtu6OF28U,1285
105
- jettask/utils/rate_limit/manager.py,sha256=R9dqczrJYpVhcecMASEYdnPDKmSVaNwmdnzrzLvadZg,9535
106
- jettask/utils/rate_limit/qps_limiter.py,sha256=npo6_Sw51AT9I4OvRfsYZddViF6cZQl5DpW8XDWRRBo,4787
107
- jettask/utils/rate_limit/task_limiter.py,sha256=7QaK1IR8rF-h1e-4-loxFL5tBiQPceFXLCdqcK8Rpl4,14072
108
- jettask/webui/__init__.py,sha256=mp8_t2FoB9WZ42_JufKPtXN_XIYF91rOjKcqiNtlGwo,592
109
- jettask/webui/app.py,sha256=NQD8nrqJaxNC0e5il8lKoAVNTTjPdP1Sm5IpiFMxokg,100780
110
- jettask/webui/config.py,sha256=8THiJZIbnmhMN3iVvynGuE2U8POxvldcG8pqwXFkWGo,2854
111
- jettask/webui/run.py,sha256=31lH_b3XL1h70QJZmFX3gcM6XB9qwVUC__O8mnRl5Yk,1439
112
- jettask/webui/api/__init__.py,sha256=AvzzOJ1W38LrDkyPiNQODaGiSdF4olYR0xy-ZpyIIJg,1243
113
- jettask/webui/api/alerts.py,sha256=YLagFP6pgCUY7mDRNPyhWdLdgOixuJk6gjxmb_ylQm4,6220
114
- jettask/webui/api/analytics.py,sha256=oQVHwfRX2YxjomBJz11XjD_c-vkyW86-SVF6YjKgBsk,8593
115
- jettask/webui/api/namespaces.py,sha256=Q2iouVBficDBbuodk87-Iz82EyJlv3VjXhmXA1Pmky8,4206
116
- jettask/webui/api/overview.py,sha256=5RzyzIZW4PWZT0FqZxeriCVVDo7wmtIjda1TOslbI9k,4181
117
- jettask/webui/api/queues.py,sha256=BeNdsEuExZFQUKa_9bav53lXoDnpqVoknDR6bIm2DiI,17666
118
- jettask/webui/api/scheduled.py,sha256=59O1IX3T9Hwur_kUKB_oXT9eEm8evs3CCPFlRHuak70,13490
119
- jettask/webui/api/settings.py,sha256=i_1bDuntrGjt0oFwCxmOyiqvcjN7HQnnl7dxeisd6oA,1190
120
- jettask/webui/models/__init__.py,sha256=5cv0oZksj1B3_rzCqsPmF3Gn9NRZLwzMnaJ8bOKGB4I,25
121
- jettask/webui/models/namespace.py,sha256=jDj-hZF_-wXzrWAWVDyZVU0JUWDax9apb4Gyykwg-rE,2006
122
- jettask/webui/namespace_manager/__init__.py,sha256=B5W3NgbmGJkK5kVE2K95VcnmU6qTHyV559KzUkdZjU8,250
123
- jettask/webui/namespace_manager/multi.py,sha256=JKX1_VNy0KOnDR4v5_t7MHLllw4oGXj8ML_1LJGhIu4,25801
124
- jettask/webui/namespace_manager/unified.py,sha256=Ricox-XE2XkCvTC2vcpkyIRm7JJRY0sCQUC0o869f5I,7405
125
- jettask/webui/services/__init__.py,sha256=ozDxcpcQFC6sT6_sndEj_EtiBozUr2N20jdb1nqqrC8,548
126
- jettask/webui/services/alert_service.py,sha256=AIk4hjx-yoFnl5vPff7TMwjgjheKu91da9mZ5gYDroo,14169
127
- jettask/webui/services/analytics_service.py,sha256=zLTtGUJ7wYIU7O5NP_VS_-wk_IXNfxKikAvQ3aaeCmI,1101
128
- jettask/webui/services/overview_service.py,sha256=UuaulrPko85e7bfiPDdb1KBRlUrBzK_i8LEbW1MLiDE,37124
129
- jettask/webui/services/queue_service.py,sha256=3ONDfGos2xHtHZlWcAlaXzEo1Km-HTIllCpN3GPKKG0,27419
130
- jettask/webui/services/queue_stats_v2.py,sha256=DW46_w1-3k9PozZScLUen0-wbHMTgxo346DLVmxsw5Q,24409
131
- jettask/webui/services/scheduled_task_service.py,sha256=ZFFtcUdk_IDGm17maHA1Hb0p00_56QqQ9ETFAF7T1bU,6226
132
- jettask/webui/services/settings_service.py,sha256=YCALdetGBe-LE2FSSuGLtauQQm8WMwCSXi6RO38lqBk,31568
133
- jettask/webui/services/task_service.py,sha256=vfSEyhFxDcEzOuA4sHEg1sYvLriUUvJ08SQ2ICG7MSU,4751
134
- jettask/webui/sql/batch_upsert_functions.sql,sha256=5eWOhOD8gWHhtcop_BrCpZTxPFeyBHtt_leNQZO89Cs,6615
135
- jettask/webui/sql/verify_database.sql,sha256=HtTup3xHWbOo1BTU_u4i41E9LrPEXB8qYbChL9WeWOc,2313
136
- jettask/worker/__init__.py,sha256=HUwUjZEWV6oaGJSUg26PPwVsIacAB8Tk8qzQQYvlMLM,1218
137
- jettask/worker/lifecycle.py,sha256=eJ2GzmuP21Jiv6tEgeEPG3pgy7MvV1ylPcdVchzxg1E,58568
138
- jettask/worker/manager.py,sha256=fIayGpH9nLqvxTv-hDwrVj41sQqid96ZzNjENCLR1Nk,19913
139
- jettask/worker/recovery.py,sha256=I7Au9DPpsEhlILxYcnnC0H-Qw51rr97sUsy2pn43Czw,29120
140
- jettask-0.2.20.dist-info/licenses/LICENSE,sha256=sKR8OPWvnqxzcHAmnaVSANpRpeM0Z52PNLCB0ZlFN6c,1062
141
- jettask-0.2.20.dist-info/METADATA,sha256=oE6vSBPtib8sl2k9JROdndV7Yk0uFsexPKsYyiGD3gA,1949
142
- jettask-0.2.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
143
- jettask-0.2.20.dist-info/entry_points.txt,sha256=9-8eTLJPgzpBgeGC8WHdMYtldZxHAXFspMeqArVUdew,148
144
- jettask-0.2.20.dist-info/top_level.txt,sha256=uymyRUF87-OsSurk5NhpeTW0jy3Wltnn91Zoa6jmAaw,8
145
- jettask-0.2.20.dist-info/RECORD,,