jettask 0.2.19__py3-none-any.whl → 0.2.23__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 (165) hide show
  1. jettask/__init__.py +12 -3
  2. jettask/cli.py +314 -228
  3. jettask/config/__init__.py +9 -1
  4. jettask/config/config.py +245 -0
  5. jettask/config/env_loader.py +381 -0
  6. jettask/config/lua_scripts.py +158 -0
  7. jettask/config/nacos_config.py +132 -5
  8. jettask/core/__init__.py +1 -1
  9. jettask/core/app.py +1573 -666
  10. jettask/core/app_importer.py +33 -16
  11. jettask/core/container.py +532 -0
  12. jettask/core/task.py +1 -4
  13. jettask/core/unified_manager_base.py +2 -2
  14. jettask/executor/__init__.py +38 -0
  15. jettask/executor/core.py +625 -0
  16. jettask/executor/executor.py +338 -0
  17. jettask/executor/orchestrator.py +290 -0
  18. jettask/executor/process_entry.py +638 -0
  19. jettask/executor/task_executor.py +317 -0
  20. jettask/messaging/__init__.py +68 -0
  21. jettask/messaging/event_pool.py +2188 -0
  22. jettask/messaging/reader.py +519 -0
  23. jettask/messaging/registry.py +266 -0
  24. jettask/messaging/scanner.py +369 -0
  25. jettask/messaging/sender.py +312 -0
  26. jettask/persistence/__init__.py +118 -0
  27. jettask/persistence/backlog_monitor.py +567 -0
  28. jettask/{backend/data_access.py → persistence/base.py} +58 -57
  29. jettask/persistence/consumer.py +315 -0
  30. jettask/{core → persistence}/db_manager.py +23 -22
  31. jettask/persistence/maintenance.py +81 -0
  32. jettask/persistence/message_consumer.py +259 -0
  33. jettask/{backend/namespace_data_access.py → persistence/namespace.py} +66 -98
  34. jettask/persistence/offline_recovery.py +196 -0
  35. jettask/persistence/queue_discovery.py +215 -0
  36. jettask/persistence/task_persistence.py +218 -0
  37. jettask/persistence/task_updater.py +583 -0
  38. jettask/scheduler/__init__.py +2 -2
  39. jettask/scheduler/loader.py +6 -5
  40. jettask/scheduler/run_scheduler.py +1 -1
  41. jettask/scheduler/scheduler.py +7 -7
  42. jettask/scheduler/{unified_scheduler_manager.py → scheduler_coordinator.py} +18 -13
  43. jettask/task/__init__.py +16 -0
  44. jettask/{router.py → task/router.py} +26 -8
  45. jettask/task/task_center/__init__.py +9 -0
  46. jettask/task/task_executor.py +318 -0
  47. jettask/task/task_registry.py +291 -0
  48. jettask/test_connection_monitor.py +73 -0
  49. jettask/utils/__init__.py +31 -1
  50. jettask/{monitor/run_backlog_collector.py → utils/backlog_collector.py} +1 -1
  51. jettask/utils/db_connector.py +1629 -0
  52. jettask/{db_init.py → utils/db_init.py} +1 -1
  53. jettask/utils/rate_limit/__init__.py +30 -0
  54. jettask/utils/rate_limit/concurrency_limiter.py +665 -0
  55. jettask/utils/rate_limit/config.py +145 -0
  56. jettask/utils/rate_limit/limiter.py +41 -0
  57. jettask/utils/rate_limit/manager.py +269 -0
  58. jettask/utils/rate_limit/qps_limiter.py +154 -0
  59. jettask/utils/rate_limit/task_limiter.py +384 -0
  60. jettask/utils/serializer.py +3 -0
  61. jettask/{monitor/stream_backlog_monitor.py → utils/stream_backlog.py} +14 -6
  62. jettask/utils/time_sync.py +173 -0
  63. jettask/webui/__init__.py +27 -0
  64. jettask/{api/v1 → webui/api}/alerts.py +1 -1
  65. jettask/{api/v1 → webui/api}/analytics.py +2 -2
  66. jettask/{api/v1 → webui/api}/namespaces.py +1 -1
  67. jettask/{api/v1 → webui/api}/overview.py +1 -1
  68. jettask/{api/v1 → webui/api}/queues.py +3 -3
  69. jettask/{api/v1 → webui/api}/scheduled.py +1 -1
  70. jettask/{api/v1 → webui/api}/settings.py +1 -1
  71. jettask/{api.py → webui/app.py} +253 -145
  72. jettask/webui/namespace_manager/__init__.py +10 -0
  73. jettask/{multi_namespace_consumer.py → webui/namespace_manager/multi.py} +69 -22
  74. jettask/{unified_consumer_manager.py → webui/namespace_manager/unified.py} +1 -1
  75. jettask/{run.py → webui/run.py} +2 -2
  76. jettask/{services → webui/services}/__init__.py +1 -3
  77. jettask/{services → webui/services}/overview_service.py +34 -16
  78. jettask/{services → webui/services}/queue_service.py +1 -1
  79. jettask/{backend → webui/services}/queue_stats_v2.py +1 -1
  80. jettask/{services → webui/services}/settings_service.py +1 -1
  81. jettask/worker/__init__.py +53 -0
  82. jettask/worker/lifecycle.py +1507 -0
  83. jettask/worker/manager.py +583 -0
  84. jettask/{core/offline_worker_recovery.py → worker/recovery.py} +268 -175
  85. {jettask-0.2.19.dist-info → jettask-0.2.23.dist-info}/METADATA +2 -71
  86. jettask-0.2.23.dist-info/RECORD +145 -0
  87. jettask/__main__.py +0 -140
  88. jettask/api/__init__.py +0 -103
  89. jettask/backend/__init__.py +0 -1
  90. jettask/backend/api/__init__.py +0 -3
  91. jettask/backend/api/v1/__init__.py +0 -17
  92. jettask/backend/api/v1/monitoring.py +0 -431
  93. jettask/backend/api/v1/namespaces.py +0 -504
  94. jettask/backend/api/v1/queues.py +0 -342
  95. jettask/backend/api/v1/tasks.py +0 -367
  96. jettask/backend/core/__init__.py +0 -3
  97. jettask/backend/core/cache.py +0 -221
  98. jettask/backend/core/database.py +0 -200
  99. jettask/backend/core/exceptions.py +0 -102
  100. jettask/backend/dependencies.py +0 -261
  101. jettask/backend/init_meta_db.py +0 -158
  102. jettask/backend/main.py +0 -1426
  103. jettask/backend/main_unified.py +0 -78
  104. jettask/backend/main_v2.py +0 -394
  105. jettask/backend/models/__init__.py +0 -3
  106. jettask/backend/models/requests.py +0 -236
  107. jettask/backend/models/responses.py +0 -230
  108. jettask/backend/namespace_api_old.py +0 -267
  109. jettask/backend/services/__init__.py +0 -3
  110. jettask/backend/start.py +0 -42
  111. jettask/backend/unified_api_router.py +0 -1541
  112. jettask/cleanup_deprecated_tables.sql +0 -16
  113. jettask/core/consumer_manager.py +0 -1695
  114. jettask/core/delay_scanner.py +0 -256
  115. jettask/core/event_pool.py +0 -1700
  116. jettask/core/heartbeat_process.py +0 -222
  117. jettask/core/task_batch.py +0 -153
  118. jettask/core/worker_scanner.py +0 -271
  119. jettask/executors/__init__.py +0 -5
  120. jettask/executors/asyncio.py +0 -876
  121. jettask/executors/base.py +0 -30
  122. jettask/executors/common.py +0 -148
  123. jettask/executors/multi_asyncio.py +0 -309
  124. jettask/gradio_app.py +0 -570
  125. jettask/integrated_gradio_app.py +0 -1088
  126. jettask/main.py +0 -0
  127. jettask/monitoring/__init__.py +0 -3
  128. jettask/pg_consumer.py +0 -1896
  129. jettask/run_monitor.py +0 -22
  130. jettask/run_webui.py +0 -148
  131. jettask/scheduler/multi_namespace_scheduler.py +0 -294
  132. jettask/scheduler/unified_manager.py +0 -450
  133. jettask/task_center_client.py +0 -150
  134. jettask/utils/serializer_optimized.py +0 -33
  135. jettask/webui_exceptions.py +0 -67
  136. jettask-0.2.19.dist-info/RECORD +0 -150
  137. /jettask/{constants.py → config/constants.py} +0 -0
  138. /jettask/{backend/config.py → config/task_center.py} +0 -0
  139. /jettask/{pg_consumer → messaging/pg_consumer}/pg_consumer_v2.py +0 -0
  140. /jettask/{pg_consumer → messaging/pg_consumer}/sql/add_execution_time_field.sql +0 -0
  141. /jettask/{pg_consumer → messaging/pg_consumer}/sql/create_new_tables.sql +0 -0
  142. /jettask/{pg_consumer → messaging/pg_consumer}/sql/create_tables_v3.sql +0 -0
  143. /jettask/{pg_consumer → messaging/pg_consumer}/sql/migrate_to_new_structure.sql +0 -0
  144. /jettask/{pg_consumer → messaging/pg_consumer}/sql/modify_time_fields.sql +0 -0
  145. /jettask/{pg_consumer → messaging/pg_consumer}/sql_utils.py +0 -0
  146. /jettask/{models.py → persistence/models.py} +0 -0
  147. /jettask/scheduler/{manager.py → task_crud.py} +0 -0
  148. /jettask/{schema.sql → schemas/schema.sql} +0 -0
  149. /jettask/{task_center.py → task/task_center/client.py} +0 -0
  150. /jettask/{monitoring → utils}/file_watcher.py +0 -0
  151. /jettask/{services/redis_monitor_service.py → utils/redis_monitor.py} +0 -0
  152. /jettask/{api/v1 → webui/api}/__init__.py +0 -0
  153. /jettask/{webui_config.py → webui/config.py} +0 -0
  154. /jettask/{webui_models → webui/models}/__init__.py +0 -0
  155. /jettask/{webui_models → webui/models}/namespace.py +0 -0
  156. /jettask/{services → webui/services}/alert_service.py +0 -0
  157. /jettask/{services → webui/services}/analytics_service.py +0 -0
  158. /jettask/{services → webui/services}/scheduled_task_service.py +0 -0
  159. /jettask/{services → webui/services}/task_service.py +0 -0
  160. /jettask/{webui_sql → webui/sql}/batch_upsert_functions.sql +0 -0
  161. /jettask/{webui_sql → webui/sql}/verify_database.sql +0 -0
  162. {jettask-0.2.19.dist-info → jettask-0.2.23.dist-info}/WHEEL +0 -0
  163. {jettask-0.2.19.dist-info → jettask-0.2.23.dist-info}/entry_points.txt +0 -0
  164. {jettask-0.2.19.dist-info → jettask-0.2.23.dist-info}/licenses/LICENSE +0 -0
  165. {jettask-0.2.19.dist-info → jettask-0.2.23.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,145 @@
1
+ jettask/__init__.py,sha256=C0AN3n16zK3rQ_PbSTNDFSHLo9jKnwJs0P3cXO2QbII,1948
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.23.dist-info/licenses/LICENSE,sha256=sKR8OPWvnqxzcHAmnaVSANpRpeM0Z52PNLCB0ZlFN6c,1062
141
+ jettask-0.2.23.dist-info/METADATA,sha256=a5XcV4INbNE37PilqcbNlKMO-cFX2wRbadZ10Rydk4w,1949
142
+ jettask-0.2.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
143
+ jettask-0.2.23.dist-info/entry_points.txt,sha256=9-8eTLJPgzpBgeGC8WHdMYtldZxHAXFspMeqArVUdew,148
144
+ jettask-0.2.23.dist-info/top_level.txt,sha256=uymyRUF87-OsSurk5NhpeTW0jy3Wltnn91Zoa6jmAaw,8
145
+ jettask-0.2.23.dist-info/RECORD,,
jettask/__main__.py DELETED
@@ -1,140 +0,0 @@
1
- #!/usr/bin/env python3
2
- """WebUI启动入口"""
3
-
4
- import sys
5
- import os
6
- import logging
7
- import argparse
8
- import asyncio
9
- sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
10
-
11
- import uvicorn
12
- from jettask.api import app
13
- from jettask.webui_config import PostgreSQLConfig, WebUIConfig, RedisConfig
14
- from jettask.db_init import init_database
15
- from jettask.pg_consumer import PostgreSQLConsumer
16
-
17
- def parse_pg_config(args):
18
- """解析PostgreSQL配置"""
19
- if args.pg_url:
20
- pg_config = PostgreSQLConfig.from_url(args.pg_url)
21
- else:
22
- pg_config = PostgreSQLConfig.from_env()
23
- # 命令行参数覆盖环境变量
24
- if hasattr(args, 'pg_host') and args.pg_host:
25
- pg_config.host = args.pg_host
26
- if hasattr(args, 'pg_port') and args.pg_port:
27
- pg_config.port = args.pg_port
28
- if hasattr(args, 'pg_database') and args.pg_database:
29
- pg_config.database = args.pg_database
30
- if hasattr(args, 'pg_user') and args.pg_user:
31
- pg_config.user = args.pg_user
32
- if hasattr(args, 'pg_password') and args.pg_password:
33
- pg_config.password = args.pg_password
34
- return pg_config
35
-
36
-
37
- def add_pg_arguments(parser):
38
- """添加PostgreSQL相关参数"""
39
- parser.add_argument('--pg-host', type=str, help='PostgreSQL host (env: JETTASK_PG_HOST)')
40
- parser.add_argument('--pg-port', type=int, help='PostgreSQL port (env: JETTASK_PG_PORT)')
41
- parser.add_argument('--pg-database', type=str, help='PostgreSQL database (env: JETTASK_PG_DATABASE)')
42
- parser.add_argument('--pg-user', type=str, help='PostgreSQL user (env: JETTASK_PG_USER)')
43
- parser.add_argument('--pg-password', type=str, help='PostgreSQL password (env: JETTASK_PG_PASSWORD)')
44
- parser.add_argument('--pg-url', type=str, help='PostgreSQL URL (postgresql://user:pass@host:port/db)')
45
-
46
-
47
- if __name__ == "__main__":
48
- # 创建主解析器
49
- parser = argparse.ArgumentParser(description='Jettask WebUI')
50
- subparsers = parser.add_subparsers(dest='command', help='可用命令', required=True)
51
-
52
- # 创建 run 子命令
53
- run_parser = subparsers.add_parser('run', help='运行WebUI服务器')
54
- run_parser.add_argument('--port', type=int, default=8080, help='服务器端口')
55
- run_parser.add_argument('--host', type=str, default='0.0.0.0', help='服务器地址')
56
- run_parser.add_argument('--with-consumer', action='store_true', help='启动内置的PostgreSQL消费者(默认不启动)')
57
- add_pg_arguments(run_parser)
58
-
59
- # 创建 init 子命令
60
- init_parser = subparsers.add_parser('init', help='初始化PostgreSQL数据库')
61
- add_pg_arguments(init_parser)
62
-
63
- # 创建 consumer 子命令
64
- consumer_parser = subparsers.add_parser('consumer', help='运行PostgreSQL消费者')
65
- add_pg_arguments(consumer_parser)
66
- consumer_parser.add_argument('--redis-host', type=str, default='localhost', help='Redis主机地址')
67
- consumer_parser.add_argument('--redis-port', type=int, default=6379, help='Redis端口')
68
- consumer_parser.add_argument('--redis-db', type=int, default=0, help='Redis数据库')
69
- consumer_parser.add_argument('--redis-password', type=str, help='Redis密码')
70
- consumer_parser.add_argument('--node-id', type=str, help='节点ID(用于分布式部署)')
71
- consumer_parser.add_argument('--prefix', type=str, default='jettask', help='Redis键前缀')
72
-
73
- # 解析参数
74
- args = parser.parse_args()
75
-
76
- # 执行相应的命令
77
- if args.command == 'init':
78
- # 初始化数据库
79
- pg_config = parse_pg_config(args)
80
- asyncio.run(init_database(pg_config))
81
-
82
- elif args.command == 'run':
83
- # 运行服务器
84
- pg_config = parse_pg_config(args)
85
-
86
- # 设置应用配置
87
- app.state.pg_config = pg_config
88
- app.state.enable_consumer = args.with_consumer # 默认不启动,需要显式指定
89
-
90
- # 配置日志
91
- logging.basicConfig(
92
- level=logging.INFO,
93
- format='%(asctime)s - %(levelname)s - %(message)s',
94
- datefmt='%Y-%m-%d %H:%M:%S'
95
- )
96
-
97
- uvicorn.run(app, host=args.host, port=args.port)
98
-
99
- elif args.command == 'consumer':
100
- # 运行独立的PostgreSQL消费者
101
- pg_config = parse_pg_config(args)
102
-
103
- # 解析Redis配置
104
- redis_config = RedisConfig(
105
- host=args.redis_host,
106
- port=args.redis_port,
107
- db=args.redis_db,
108
- password=args.redis_password
109
- )
110
-
111
- # 配置日志
112
- logging.basicConfig(
113
- level=logging.INFO,
114
- format='%(asctime)s - %(levelname)s - %(message)s',
115
- datefmt='%Y-%m-%d %H:%M:%S'
116
- )
117
-
118
- # 运行消费者
119
- async def run_consumer():
120
- consumer = PostgreSQLConsumer(
121
- pg_config=pg_config,
122
- redis_config=redis_config,
123
- prefix=args.prefix,
124
- node_id=args.node_id
125
- )
126
-
127
- try:
128
- await consumer.start()
129
- logging.info(f"PostgreSQL consumer started on node: {consumer.node_id}")
130
-
131
- # 保持运行
132
- while True:
133
- await asyncio.sleep(1)
134
-
135
- except KeyboardInterrupt:
136
- logging.info("Received interrupt signal")
137
- finally:
138
- await consumer.stop()
139
-
140
- asyncio.run(run_consumer())
jettask/api/__init__.py DELETED
@@ -1,103 +0,0 @@
1
- """
2
- JetTask API 应用初始化
3
- """
4
- from fastapi import FastAPI
5
- from fastapi.middleware.cors import CORSMiddleware
6
- from contextlib import asynccontextmanager
7
- import logging
8
-
9
- # 设置日志
10
- logging.basicConfig(level=logging.INFO)
11
- logger = logging.getLogger(__name__)
12
-
13
-
14
- def create_app() -> FastAPI:
15
- """创建并配置 FastAPI 应用"""
16
-
17
- @asynccontextmanager
18
- async def lifespan(app: FastAPI):
19
- """应用生命周期管理"""
20
- # 启动时初始化
21
- try:
22
- import os
23
- # 检查是否使用Nacos配置
24
- use_nacos = os.getenv('USE_NACOS', 'false').lower() == 'true'
25
-
26
- # 初始化数据库管理器
27
- from jettask.core.db_manager import init_db_manager
28
- await init_db_manager(use_nacos=use_nacos)
29
-
30
- # 延迟导入,避免循环依赖
31
- from jettask.backend.data_access import JetTaskDataAccess
32
- from jettask.backend.namespace_data_access import get_namespace_data_access
33
- from jettask.backend.config import task_center_config
34
-
35
- # 创建数据访问实例
36
- data_access = JetTaskDataAccess()
37
- namespace_data_access = get_namespace_data_access()
38
-
39
- # 存储在app.state中供路由使用
40
- app.state.data_access = data_access
41
- app.state.namespace_data_access = namespace_data_access
42
-
43
- # 初始化JetTask数据访问
44
- await data_access.initialize()
45
-
46
- # 记录任务中心配置
47
- logger.info("=" * 60)
48
- logger.info("任务中心配置:")
49
- logger.info(f" 配置模式: {'Nacos' if use_nacos else '环境变量'}")
50
- logger.info(f" 元数据库: {task_center_config.meta_db_host}:{task_center_config.meta_db_port}/{task_center_config.meta_db_name}")
51
- logger.info(f" API服务: {task_center_config.api_host}:{task_center_config.api_port}")
52
- logger.info(f" 基础URL: {task_center_config.base_url}")
53
- logger.info("=" * 60)
54
-
55
- logger.info("JetTask Monitor API 启动成功")
56
- except Exception as e:
57
- logger.error(f"启动失败: {e}")
58
- import traceback
59
- traceback.print_exc()
60
- raise
61
-
62
- yield
63
-
64
- # 关闭时清理资源
65
- try:
66
- await app.state.data_access.close()
67
-
68
- # 关闭数据库管理器
69
- from jettask.core.db_manager import close_db_manager
70
- await close_db_manager()
71
-
72
- logger.info("JetTask Monitor API 关闭完成")
73
- except Exception as e:
74
- logger.error(f"关闭时出错: {e}")
75
- import traceback
76
- traceback.print_exc()
77
-
78
- # 创建 FastAPI 应用
79
- app = FastAPI(
80
- title="JetTask Monitor API",
81
- version="1.0.0",
82
- lifespan=lifespan
83
- )
84
-
85
- # 配置CORS
86
- app.add_middleware(
87
- CORSMiddleware,
88
- allow_origins=["*"], # 生产环境应该配置具体的前端地址
89
- allow_credentials=True,
90
- allow_methods=["*"],
91
- allow_headers=["*"],
92
- )
93
-
94
- # 注册路由
95
- from jettask.api.v1 import api_router
96
-
97
- app.include_router(api_router)
98
-
99
- return app
100
-
101
-
102
- # 创建默认应用实例
103
- app = create_app()
@@ -1 +0,0 @@
1
- # Backend package initialization
@@ -1,3 +0,0 @@
1
- """
2
- API routes for JetTask WebUI Backend
3
- """
@@ -1,17 +0,0 @@
1
- """
2
- API v1 routes
3
- """
4
- from fastapi import APIRouter
5
- from .queues import router as queues_router
6
- from .tasks import router as tasks_router
7
- from .monitoring import router as monitoring_router
8
- from .namespaces import router as namespaces_router
9
-
10
- # 创建v1路由器
11
- v1_router = APIRouter(prefix="/v1")
12
-
13
- # 注册子路由
14
- v1_router.include_router(queues_router, prefix="/queues", tags=["queues"])
15
- v1_router.include_router(tasks_router, prefix="/tasks", tags=["tasks"])
16
- v1_router.include_router(monitoring_router, prefix="/monitoring", tags=["monitoring"])
17
- v1_router.include_router(namespaces_router, prefix="/namespaces", tags=["namespaces"])