funboost 48.7__py3-none-any.whl → 48.9__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.

Potentially problematic release.


This version of funboost might be problematic. Click here for more details.

Files changed (43) hide show
  1. funboost/__init__.py +1 -1
  2. funboost/__main__.py +2 -0
  3. funboost/concurrent_pool/custom_threadpool_executor.py +1 -1
  4. funboost/constant.py +17 -2
  5. funboost/consumers/base_consumer.py +42 -28
  6. funboost/consumers/rabbitmq_amqpstorm_consumer.py +6 -1
  7. funboost/core/active_cousumer_info_getter.py +50 -10
  8. funboost/core/booster.py +2 -1
  9. funboost/core/cli/funboost_fire.py +10 -0
  10. funboost/core/current_task.py +17 -0
  11. funboost/core/func_params_model.py +21 -17
  12. funboost/core/loggers.py +1 -0
  13. funboost/core/msg_result_getter.py +1 -0
  14. funboost/funboost_config_deafult.py +1 -1
  15. funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  16. funboost/function_result_web/__pycache__/app.cpython-39.pyc +0 -0
  17. funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  18. funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
  19. funboost/function_result_web/app.py +42 -2
  20. funboost/function_result_web/app_debug_start.py +6 -0
  21. funboost/function_result_web/functions.py +66 -3
  22. funboost/function_result_web/static/js/form-memory.js +92 -0
  23. funboost/function_result_web/static/js_cdn/chart.js +20 -0
  24. funboost/function_result_web/static/js_cdn/tabulator-tables@5.5.0/dist/js/tabulator.min.js +1 -1
  25. funboost/function_result_web/templates/about.html +0 -9
  26. funboost/function_result_web/templates/conusme_speed.html +2 -2
  27. funboost/function_result_web/templates/fun_result_table.html +1 -1
  28. funboost/function_result_web/templates/index.html +64 -9
  29. funboost/function_result_web/templates/queue_op.html +419 -28
  30. funboost/function_result_web/templates/rpc_call.html +312 -0
  31. funboost/function_result_web/templates/running_consumer_by_ip.html +2 -2
  32. funboost/function_result_web/templates/running_consumer_by_queue_name.html +2 -2
  33. funboost/publishers/rabbitmq_amqpstorm_publisher.py +1 -1
  34. funboost/utils/ctrl_c_end.py +19 -1
  35. funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +6 -0
  36. funboost/utils/dependency_packages_in_pythonpath/readme.md +6 -0
  37. {funboost-48.7.dist-info → funboost-48.9.dist-info}/METADATA +173 -81
  38. {funboost-48.7.dist-info → funboost-48.9.dist-info}/RECORD +42 -39
  39. {funboost-48.7.dist-info → funboost-48.9.dist-info}/WHEEL +1 -1
  40. funboost/function_result_web/templates/index_/321/204/342/225/225/320/235/321/205/320/237/320/277/321/206/320/232/320/250/321/205/320/237/320/260.html +0 -153
  41. {funboost-48.7.dist-info → funboost-48.9.dist-info}/LICENSE +0 -0
  42. {funboost-48.7.dist-info → funboost-48.9.dist-info}/entry_points.txt +0 -0
  43. {funboost-48.7.dist-info → funboost-48.9.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 48.7
3
+ Version: 48.9
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,funboost web manager 方便查看和管理消费函数;99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -27,29 +27,29 @@ Classifier: Programming Language :: Python :: 3 :: Only
27
27
  Classifier: Topic :: Software Development :: Libraries
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE
30
- Requires-Dist: nb_log>=13.2
31
- Requires-Dist: nb_libs>=1.8
32
- Requires-Dist: nb_time>=2.4
33
- Requires-Dist: pymongo>=4.6.3
34
- Requires-Dist: AMQPStorm==2.10.6
35
- Requires-Dist: rabbitpy==2.0.1
36
- Requires-Dist: decorator==5.1.1
37
- Requires-Dist: tomorrow3==1.1.0
38
- Requires-Dist: persist-queue>=0.4.2
39
- Requires-Dist: apscheduler<4.0.0,>=3.10.1
30
+ Requires-Dist: nb-log >=13.2
31
+ Requires-Dist: nb-libs >=1.8
32
+ Requires-Dist: nb-time >=2.4
33
+ Requires-Dist: pymongo >=4.6.3
34
+ Requires-Dist: AMQPStorm ==2.10.6
35
+ Requires-Dist: rabbitpy ==2.0.1
36
+ Requires-Dist: decorator ==5.1.1
37
+ Requires-Dist: tomorrow3 ==1.1.0
38
+ Requires-Dist: persist-queue >=0.4.2
39
+ Requires-Dist: apscheduler <4.0.0,>=3.10.1
40
40
  Requires-Dist: pikav0
41
41
  Requires-Dist: pikav1
42
42
  Requires-Dist: redis2
43
43
  Requires-Dist: redis3
44
44
  Requires-Dist: redis5
45
45
  Requires-Dist: redis
46
- Requires-Dist: setuptools_rust
47
- Requires-Dist: fabric2>=2.6.0
48
- Requires-Dist: nb_filelock
46
+ Requires-Dist: setuptools-rust
47
+ Requires-Dist: fabric2 >=2.6.0
48
+ Requires-Dist: nb-filelock
49
49
  Requires-Dist: pysnooper
50
50
  Requires-Dist: deprecated
51
51
  Requires-Dist: cryptography
52
- Requires-Dist: auto_run_on_remote
52
+ Requires-Dist: auto-run-on-remote
53
53
  Requires-Dist: frozenlist
54
54
  Requires-Dist: fire
55
55
  Requires-Dist: pydantic
@@ -57,66 +57,66 @@ Requires-Dist: orjson
57
57
  Requires-Dist: async-timeout
58
58
  Requires-Dist: typing-extensions
59
59
  Provides-Extra: all
60
- Requires-Dist: confluent_kafka==1.7.0; extra == "all"
61
- Requires-Dist: pulsar-client==3.1.0; python_version >= "3.7" and extra == "all"
62
- Requires-Dist: celery; extra == "all"
63
- Requires-Dist: flower; extra == "all"
64
- Requires-Dist: nameko==2.14.1; extra == "all"
65
- Requires-Dist: sqlalchemy==1.4.13; extra == "all"
66
- Requires-Dist: sqlalchemy_utils==0.36.1; extra == "all"
67
- Requires-Dist: dramatiq==1.14.2; extra == "all"
68
- Requires-Dist: huey==2.4.5; extra == "all"
69
- Requires-Dist: rq==1.15.0; extra == "all"
70
- Requires-Dist: kombu; extra == "all"
71
- Requires-Dist: eventlet==0.33.3; extra == "all"
72
- Requires-Dist: gevent==22.10.2; extra == "all"
73
- Requires-Dist: elasticsearch; extra == "all"
74
- Requires-Dist: gnsq==1.0.1; extra == "all"
75
- Requires-Dist: psutil; extra == "all"
76
- Requires-Dist: peewee==3.17.3; extra == "all"
77
- Requires-Dist: nats-python; extra == "all"
78
- Requires-Dist: aiohttp==3.8.3; extra == "all"
79
- Requires-Dist: paho-mqtt; extra == "all"
80
- Requires-Dist: rocketmq; extra == "all"
81
- Requires-Dist: zmq; extra == "all"
82
- Requires-Dist: pyzmq; extra == "all"
83
- Requires-Dist: kafka-python==2.0.2; extra == "all"
84
- Requires-Dist: flask; extra == "all"
85
- Requires-Dist: flask_bootstrap; extra == "all"
86
- Requires-Dist: flask_wtf; extra == "all"
87
- Requires-Dist: wtforms; extra == "all"
88
- Requires-Dist: flask_login; extra == "all"
89
- Provides-Extra: extra-brokers
90
- Requires-Dist: confluent_kafka==1.7.0; extra == "extra-brokers"
91
- Requires-Dist: pulsar-client==3.1.0; python_version >= "3.7" and extra == "extra-brokers"
92
- Requires-Dist: celery; extra == "extra-brokers"
93
- Requires-Dist: flower; extra == "extra-brokers"
94
- Requires-Dist: nameko==2.14.1; extra == "extra-brokers"
95
- Requires-Dist: sqlalchemy==1.4.13; extra == "extra-brokers"
96
- Requires-Dist: sqlalchemy_utils==0.36.1; extra == "extra-brokers"
97
- Requires-Dist: dramatiq==1.14.2; extra == "extra-brokers"
98
- Requires-Dist: huey==2.4.5; extra == "extra-brokers"
99
- Requires-Dist: rq==1.15.0; extra == "extra-brokers"
100
- Requires-Dist: kombu; extra == "extra-brokers"
101
- Requires-Dist: eventlet==0.33.3; extra == "extra-brokers"
102
- Requires-Dist: gevent==22.10.2; extra == "extra-brokers"
103
- Requires-Dist: elasticsearch; extra == "extra-brokers"
104
- Requires-Dist: gnsq==1.0.1; extra == "extra-brokers"
105
- Requires-Dist: psutil; extra == "extra-brokers"
106
- Requires-Dist: peewee==3.17.3; extra == "extra-brokers"
107
- Requires-Dist: nats-python; extra == "extra-brokers"
108
- Requires-Dist: aiohttp==3.8.3; extra == "extra-brokers"
109
- Requires-Dist: paho-mqtt; extra == "extra-brokers"
110
- Requires-Dist: rocketmq; extra == "extra-brokers"
111
- Requires-Dist: zmq; extra == "extra-brokers"
112
- Requires-Dist: pyzmq; extra == "extra-brokers"
113
- Requires-Dist: kafka-python==2.0.2; extra == "extra-brokers"
60
+ Requires-Dist: confluent-kafka ==1.7.0 ; extra == 'all'
61
+ Requires-Dist: celery ; extra == 'all'
62
+ Requires-Dist: flower ; extra == 'all'
63
+ Requires-Dist: nameko ==2.14.1 ; extra == 'all'
64
+ Requires-Dist: sqlalchemy ==1.4.13 ; extra == 'all'
65
+ Requires-Dist: sqlalchemy-utils ==0.36.1 ; extra == 'all'
66
+ Requires-Dist: dramatiq ==1.14.2 ; extra == 'all'
67
+ Requires-Dist: huey ==2.4.5 ; extra == 'all'
68
+ Requires-Dist: rq ==1.15.0 ; extra == 'all'
69
+ Requires-Dist: kombu ; extra == 'all'
70
+ Requires-Dist: eventlet ==0.33.3 ; extra == 'all'
71
+ Requires-Dist: gevent ==22.10.2 ; extra == 'all'
72
+ Requires-Dist: elasticsearch ; extra == 'all'
73
+ Requires-Dist: gnsq ==1.0.1 ; extra == 'all'
74
+ Requires-Dist: psutil ; extra == 'all'
75
+ Requires-Dist: peewee ==3.17.3 ; extra == 'all'
76
+ Requires-Dist: nats-python ; extra == 'all'
77
+ Requires-Dist: aiohttp ==3.8.3 ; extra == 'all'
78
+ Requires-Dist: paho-mqtt ; extra == 'all'
79
+ Requires-Dist: rocketmq ; extra == 'all'
80
+ Requires-Dist: zmq ; extra == 'all'
81
+ Requires-Dist: pyzmq ; extra == 'all'
82
+ Requires-Dist: kafka-python ==2.0.2 ; extra == 'all'
83
+ Requires-Dist: flask ; extra == 'all'
84
+ Requires-Dist: flask-bootstrap ; extra == 'all'
85
+ Requires-Dist: flask-wtf ; extra == 'all'
86
+ Requires-Dist: wtforms ; extra == 'all'
87
+ Requires-Dist: flask-login ; extra == 'all'
88
+ Requires-Dist: pulsar-client ==3.1.0 ; (python_version >= "3.7") and extra == 'all'
89
+ Provides-Extra: extra_brokers
90
+ Requires-Dist: confluent-kafka ==1.7.0 ; extra == 'extra_brokers'
91
+ Requires-Dist: celery ; extra == 'extra_brokers'
92
+ Requires-Dist: flower ; extra == 'extra_brokers'
93
+ Requires-Dist: nameko ==2.14.1 ; extra == 'extra_brokers'
94
+ Requires-Dist: sqlalchemy ==1.4.13 ; extra == 'extra_brokers'
95
+ Requires-Dist: sqlalchemy-utils ==0.36.1 ; extra == 'extra_brokers'
96
+ Requires-Dist: dramatiq ==1.14.2 ; extra == 'extra_brokers'
97
+ Requires-Dist: huey ==2.4.5 ; extra == 'extra_brokers'
98
+ Requires-Dist: rq ==1.15.0 ; extra == 'extra_brokers'
99
+ Requires-Dist: kombu ; extra == 'extra_brokers'
100
+ Requires-Dist: eventlet ==0.33.3 ; extra == 'extra_brokers'
101
+ Requires-Dist: gevent ==22.10.2 ; extra == 'extra_brokers'
102
+ Requires-Dist: elasticsearch ; extra == 'extra_brokers'
103
+ Requires-Dist: gnsq ==1.0.1 ; extra == 'extra_brokers'
104
+ Requires-Dist: psutil ; extra == 'extra_brokers'
105
+ Requires-Dist: peewee ==3.17.3 ; extra == 'extra_brokers'
106
+ Requires-Dist: nats-python ; extra == 'extra_brokers'
107
+ Requires-Dist: aiohttp ==3.8.3 ; extra == 'extra_brokers'
108
+ Requires-Dist: paho-mqtt ; extra == 'extra_brokers'
109
+ Requires-Dist: rocketmq ; extra == 'extra_brokers'
110
+ Requires-Dist: zmq ; extra == 'extra_brokers'
111
+ Requires-Dist: pyzmq ; extra == 'extra_brokers'
112
+ Requires-Dist: kafka-python ==2.0.2 ; extra == 'extra_brokers'
113
+ Requires-Dist: pulsar-client ==3.1.0 ; (python_version >= "3.7") and extra == 'extra_brokers'
114
114
  Provides-Extra: flask
115
- Requires-Dist: flask; extra == "flask"
116
- Requires-Dist: flask_bootstrap; extra == "flask"
117
- Requires-Dist: flask_wtf; extra == "flask"
118
- Requires-Dist: wtforms; extra == "flask"
119
- Requires-Dist: flask_login; extra == "flask"
115
+ Requires-Dist: flask ; extra == 'flask'
116
+ Requires-Dist: flask-bootstrap ; extra == 'flask'
117
+ Requires-Dist: flask-wtf ; extra == 'flask'
118
+ Requires-Dist: wtforms ; extra == 'flask'
119
+ Requires-Dist: flask-login ; extra == 'flask'
120
120
 
121
121
 
122
122
 
@@ -138,6 +138,8 @@ Requires-Dist: flask_login; extra == "flask"
138
138
  pip install funboost ,python全功能分布式函数调度框架。 demo用法例子见文档1.3
139
139
 
140
140
  funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。
141
+ funboost的神奇之处在于它同时拥有"轻量级使用方式"和"重量级功能集",完全颠覆了"功能强大=使用复杂"的传统思维。
142
+ 它证明了一个框架可以既功能丰富又极其易用,这是对传统Python框架设计的一次巧妙超越。
141
143
 
142
144
  只需要一行@boost代码即可分布式执行python一切任意函数,99%用过funboost的pythoner 感受是 方便 快速 强大。
143
145
  支持python所有类型的并发模式,消息队列方面支持全球一切知名消息队列中间件和模拟的实现消息队列,
@@ -145,7 +147,11 @@ funboost的功能是全面性重量级,用户能想得到的功能99%全都有
145
147
  也支持huey dramatiq rq等任务队列框架作为funboost的broker。
146
148
 
147
149
  python函数加速器,框架包罗万象,一统编程思维,兼容50% python编程业务场景,适用范围广。
148
- python万能分布式函数调度框架,支持5种并发模式,30+种消息队列中间件(或任务队列框架),
150
+ python万能分布式函数调度框架,支持5种并发模式,30+种消息队列中间件
151
+ (不仅支持几乎所有你能想到的消息队列中间件,还支持本地磁盘队列、数据库队列 (SQLAlchemy, Peewee)、
152
+ 内存队列、甚至是 HTTP 请求、WebSocket 等作为任务队列,甚至是将 Celery、Dramatiq、Huey 等其他框架整体作为其 Broker。
153
+ funboost源码高扩展性的设计,造成“万物皆可为Broker”,并不是有30种传统意义上的经典消息队列,
154
+ 因为世界上总共都没有30种知名的经典消息队列),
149
155
  30种任务控制功能。给任意python函数赋能。
150
156
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
151
157
 
@@ -191,9 +197,41 @@ funboost的旧框架名字是function_scheduling_distributed_framework , 关系
191
197
  ### 1.0.1 [分布式函数调度框架文档地址 ](https://funboost.readthedocs.io/zh-cn/latest/index.html)
192
198
  [查看分布式函数调度框架文档 https://funboost.readthedocs.io/zh-cn/latest/index.html](https://funboost.readthedocs.io/zh-cn/latest/index.html)
193
199
 
200
+ 文档很长,大部分都是讲原理和对比各种框架。但是用户只需要学习1.3这1个例子就能掌握了。因为其他例子只是 @boost的 BoosterParams 里面的控制入参换了一下。
194
201
 
195
-
196
- [funboost依赖的nb_log日志文档 https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c9.html#id2](https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c9.html#id2)
202
+ 用户只需要专门看 BoosterParams 里面的每个入参的注释就能掌握框架了,因为funboost只有@boost一行代码需要你写。
203
+
204
+ funboost 框架和一般的框架不一样,因为只有一行代码需要掌握,绝对不是要求用户先精通框架本身才能自由发挥。
205
+
206
+ #### [1.python万能分布式函数调度框架简funboost简介](https://funboost.readthedocs.io/zh-cn/latest/articles/c1.html)
207
+ #### [2. funboost对比celery框架](https://funboost.readthedocs.io/zh-cn/latest/articles/c2.html)
208
+
209
+ #### [3.funboost框架详细介绍](https://funboost.readthedocs.io/zh-cn/latest/articles/c3.html)
210
+
211
+ #### [4.funboost使用框架的各种代码示例](https://funboost.readthedocs.io/zh-cn/latest/articles/c4.html)
212
+
213
+ #### [4b.funboost使用框架的各种代码示例(高级进阶)](https://funboost.readthedocs.io/zh-cn/latest/articles/c4b.html)
214
+
215
+ #### [5.funboost框架运行时截图](https://funboost.readthedocs.io/zh-cn/latest/articles/c5.html)
216
+
217
+ #### [6.funboost常见问题回答](https://funboost.readthedocs.io/zh-cn/latest/articles/c6.html)
218
+
219
+ #### [7.funboost更新记录](https://funboost.readthedocs.io/zh-cn/latest/articles/c7.html)
220
+
221
+ #### [8.funboost是万能函数调度框架,当然可以爬虫,自由编程 降维打击 框架奴役](https://funboost.readthedocs.io/zh-cn/latest/articles/c8.html)
222
+
223
+ #### [9.轻松远程服务器部署运行函数](https://funboost.readthedocs.io/zh-cn/latest/articles/c9.html#)
224
+
225
+ #### [10.python3.6-3.12 安装/使用funboost出错问题反馈](https://funboost.readthedocs.io/zh-cn/latest/articles/c10.html)
226
+
227
+ #### [11.funboost 使用某些中间件或三方任务队列框架作为broker的例子(包括celery框架)。](https://funboost.readthedocs.io/zh-cn/latest/articles/c11.html)
228
+
229
+ #### [12.funboost 控制台支持命令行](https://funboost.readthedocs.io/zh-cn/latest/articles/c12.html)
230
+
231
+ #### [13.启动 funboost web manager,查看消费结果和队列管理](https://funboost.readthedocs.io/zh-cn/latest/articles/c13.html)
232
+
233
+
234
+ #### [funboost依赖的nb_log日志文档 https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c9.html#id2](https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c9.html#id2)
197
235
 
198
236
  ```
199
237
  文档很长,但归根结底只需要学习 1.3 里面的这1个例子就行,主要是修改下@boost的各种参数,
@@ -238,7 +276,7 @@ pip install funboost --upgrade
238
276
 
239
277
  ## 1.2 框架功能介绍
240
278
 
241
- 分布式函数调度框架,支持5种并发模式,20+种消息中间件,30种任务控制功能。<br>
279
+ 分布式函数调度框架,支持5种并发模式,30+种消息中间件,30种任务控制功能。<br>
242
280
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
243
281
 
244
282
  有了这个框架,用户再也无需亲自手写操作进程、线程、协程的并发的代码了。
@@ -465,6 +503,9 @@ python通用分布式函数调度框架。适用场景范围广泛, 框架非
465
503
  funboost支持命令行操作:
466
504
  使用fire实现的命令行,见文档第12章
467
505
 
506
+ 可视化查看和操作:
507
+ funboost web manager 可以查看和管理队列和消费运行情况。
508
+
468
509
  </pre>
469
510
 
470
511
 
@@ -530,22 +571,73 @@ if __name__ == "__main__":
530
571
  <a href="https://imgse.com/i/pkFkCUe"><img src="https://s21.ax1x.com/2024/04/29/pkFkCUe.png" alt="pkFkCUe.png" border="0" /></a>
531
572
 
532
573
 
533
- funboost web manager 截图:
574
+
575
+ ## 1.3.2 funboost丝滑连续启动多个函数消费
576
+
577
+ ```python
578
+
579
+ """
580
+ 此代码
581
+ 1.演示支持多个函数消费队列的无阻塞启动(consume不会阻塞主线程)
582
+ 2.演示支持在一个消费函数内部向任意队列发布新任务,实现多级任务链
583
+ 代码结构清晰,扩展性极强
584
+ """
585
+ from funboost import boost, BrokerEnum,BoosterParams,ctrl_c_recv,ConcurrentModeEnum
586
+ import time
587
+
588
+ class MyBoosterParams(BoosterParams): # 自定义的参数类,继承BoosterParams,用于减少每个消费函数装饰器的重复相同入参个数
589
+ broker_kind: str = BrokerEnum.MEMORY_QUEUE
590
+ max_retry_times: int = 3
591
+ concurrent_mode: str = ConcurrentModeEnum.THREADING
592
+
593
+
594
+ @boost(MyBoosterParams(queue_name='s1_queue', qps=1, ))
595
+ def step1(a:int,b:int):
596
+ print(f'a={a},b={b}')
597
+ time.sleep(0.7)
598
+ for j in range(10):
599
+ step2.push(c=a+b +j,d=a*b +j,e=a-b +j ) # step1消费函数里面,也可以继续向其他任意队列发布消息。
600
+ return a+b
601
+
602
+
603
+ @boost(MyBoosterParams(queue_name='s2_queue', qps=3, ))
604
+ def step2(c:int,d:int,e:int):
605
+ time.sleep(3)
606
+ print(f'c={c},d={d},e={e}')
607
+ return c* d * e
608
+
609
+
610
+ if __name__ == '__main__':
611
+ for i in range(100):
612
+ step1.push(i,i*2) # 向 step1函数的队列发送消息。
613
+ step1.consume() # 调用.consume是非阻塞的启动消费,是在单独的子线程中循环拉取消息的。
614
+ # 有的人还担心阻塞而手动使用 threading.Thread(target=step1.consume).start() 来启动消费,这是完全多此一举的错误写法。
615
+ step2.consume() # 所以可以连续无阻塞丝滑的启动多个函数消费。
616
+ ctrl_c_recv()
617
+
618
+ ```
619
+
620
+ ## funboost web manager 截图:
534
621
 
535
622
  函数消费结果:可查看和搜索函数实时消费状态和结果
536
623
  [![pEJCffK.png](https://s21.ax1x.com/2025/03/04/pEJCffK.png)](https://imgse.com/i/pEJCffK)
537
624
 
625
+ 消费速度图:可查看实时和历史消费速度
626
+ [![pEJCWY6.png](https://s21.ax1x.com/2025/03/04/pEJCWY6.png)](https://imgse.com/i/pEJCWY6)
627
+
538
628
  运行中消费者 by ip: 根据ip搜索有哪些消费者
539
629
  [![pEJCRFx.png](https://s21.ax1x.com/2025/03/04/pEJCRFx.png)](https://imgse.com/i/pEJCRFx)
540
630
 
541
631
 
542
- 队列操作:查看和操作队列
632
+ 队列操作:查看和操作队列,包括 清空清空 暂停消费 恢复消费 调整qps和并发
543
633
  [![pEJC6m9.png](https://s21.ax1x.com/2025/03/04/pEJC6m9.png)](https://imgse.com/i/pEJC6m9)
544
634
 
545
635
  队列操作,查看消费者详情:查看队列的所有消费者详情
546
636
  [![pEJCgT1.png](https://s21.ax1x.com/2025/03/04/pEJCgT1.png)](https://imgse.com/i/pEJCgT1)
547
637
 
548
-
638
+ rpc调用:在网页上对30种消息队列发布消息并获取消息的函数执行结;根据taskid获取结果。
639
+ <!-- [![pETq8hj.png](https://s21.ax1x.com/2025/04/28/pETq8hj.png)](https://imgse.com/i/pETq8hj) -->
640
+ [![pE7y8oT.png](https://s21.ax1x.com/2025/04/29/pE7y8oT.png)](https://imgse.com/i/pE7y8oT)
549
641
 
550
642
  ## 1.4 python分布式函数执行为什么重要?
551
643
 
@@ -1,8 +1,8 @@
1
- funboost/__init__.py,sha256=V5iFIlzZi-svRuEWbYLPqUEye-6w75NR8N8Fq4LECys,4093
1
+ funboost/__init__.py,sha256=s8FmFpSlhWb3iWADex2-Fjrh8VAEwHu03uko_z0mMFc,4093
2
2
  funboost/__init__old.py,sha256=9Kv3cPLnPkbzMRnuJFVkPsuDdx1CdcSIuITkpdncZSc,20382
3
- funboost/__main__.py,sha256=-6Nogi666Y0LN8fVm3JmHGTOk8xEGWvotW_GDbSaZME,1065
4
- funboost/constant.py,sha256=bsXk4UhaOvWlaIr160upSh1jPd7ckG1r9Wu-nMYg6yU,8352
5
- funboost/funboost_config_deafult.py,sha256=K-kCFGEjD107wHWFspNrIWsPNSVteP2Xww1yRbXd-Wk,6651
3
+ funboost/__main__.py,sha256=BetXBv7PkVeeK-UENiFq_KEEIzvObMI0rd8S1DHRdLU,1139
4
+ funboost/constant.py,sha256=LreGf6HJ0TCj0HQKvfP4T5ZR9-KJUU7-SkoH1BM1HFM,9164
5
+ funboost/funboost_config_deafult.py,sha256=291HaHfcXqLxde6udJZwQoOAeGzKCkV-DkKs1aJSPu4,6704
6
6
  funboost/set_frame_config.py,sha256=kxYo_x2pMihwfTgFWrLxNbgI0IbFYC_HpSd9YLQM1ig,14439
7
7
  funboost/assist/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  funboost/assist/celery_helper.py,sha256=zhyAIBIbnPcS8pdp0oqVh57Jx-hIDX0njTZiYZFCLFw,6486
@@ -24,7 +24,7 @@ funboost/concurrent_pool/bounded_threadpoolexcutor.py,sha256=AWFsTwK7hIiln0XVaiY
24
24
  funboost/concurrent_pool/concurrent_pool_with_multi_process.py,sha256=qChdRh11Epk7-kmLEdoB1TtM2plx_FZ1u_-g0KNc-MU,1744
25
25
  funboost/concurrent_pool/custom_evenlet_pool_executor.py,sha256=tu8Og-uIt5VWqGERnIihBaF7ZFw5D0xww1_ur39OZXY,3252
26
26
  funboost/concurrent_pool/custom_gevent_pool_executor.py,sha256=FLcEwEJgFtaEPzH-WCFHtCdEUOTeK0dLSL_oNBcXQW8,5429
27
- funboost/concurrent_pool/custom_threadpool_executor.py,sha256=hYgRYqFoCvplyQFTzw57P-oRcmO6ZuxW5qB3U1SPZks,12084
27
+ funboost/concurrent_pool/custom_threadpool_executor.py,sha256=7z2Trnng6e6wFfrf1LqNGA6AHi2FAQKrF9oK9DLNfaM,12084
28
28
  funboost/concurrent_pool/custom_threadpool_executor000.py,sha256=jJLXy3h-bELap6nZA6yLtdozzTWcvCtZ7IY6MTqLEAM,9317
29
29
  funboost/concurrent_pool/fixed_thread_pool.py,sha256=QHJufg4jug6nkla2g5lc_5FVd_egKiNquFACRYeg6uE,1626
30
30
  funboost/concurrent_pool/flexible_thread_pool.py,sha256=iHn3z7KDWX5S70RNfJiozjC2EJ5iq0OUDktnUdHlLCY,6078
@@ -36,7 +36,7 @@ funboost/concurrent_pool/backup/async_pool_executor_back.py,sha256=KL6zEQaa1KkZO
36
36
  funboost/concurrent_pool/backup/async_pool_executor_janus.py,sha256=OHMWJ9l3EYTpPpcrPrGGKd4K0tmQ2PN8HiX0Dta0EOo,5728
37
37
  funboost/concurrent_pool/backup/grok_async_pool.py,sha256=3DgyB2aT0iHakb-pxd51WRKGIF7EKNNcX_ogDTF2hik,5825
38
38
  funboost/consumers/__init__.py,sha256=ZXY_6Kut1VYNQiF5aWEgIWobsW1ht9YUP0TdRZRWFqI,126
39
- funboost/consumers/base_consumer.py,sha256=M0XtAfG6dTp0u3WOpMI4xi7Y7wYkdPWQhITPeBYbawg,84898
39
+ funboost/consumers/base_consumer.py,sha256=_SyfHrpiyZBfK7bgtnP_vat5ko2ka4XVSclulCqo-VA,85912
40
40
  funboost/consumers/celery_consumer.py,sha256=nQpSkzPBJ4bRpxn4i9ms0axrJiq9RWhb4lG2nAdCIig,9254
41
41
  funboost/consumers/confirm_mixin.py,sha256=5xC9AAQr_MY4tbSed8U-M6tOVmh69Qv9X0ld0JLT9Tk,6185
42
42
  funboost/consumers/dramatiq_consumer.py,sha256=ozmeAfeF0U-YNYHK4suQB0N264h5AZdfMH0O45Mh-8A,2229
@@ -59,7 +59,7 @@ funboost/consumers/nsq_consumer.py,sha256=KcP4wT656LyvuwyQXnVp0B6DwYvnZ6z_Vyzt0K
59
59
  funboost/consumers/peewee_conusmer.py,sha256=VqbSu9AdKO4_wgu0XhTWRO3VeWctecbbz2X_V04_kXw,1115
60
60
  funboost/consumers/persist_queue_consumer.py,sha256=PUfelfW84YiqcsbcIAveWMC50rw2DScZ3u_aiaS0Kk8,1015
61
61
  funboost/consumers/pulsar_consumer.py,sha256=eorN61kCvP3yg4fNAB3ZCfqpJJxPnAN6PJY48uiYX5Y,2385
62
- funboost/consumers/rabbitmq_amqpstorm_consumer.py,sha256=zcSX16cw087MgnrHsiZibNUzIZRKfGBtVVnhnYyYku0,2371
62
+ funboost/consumers/rabbitmq_amqpstorm_consumer.py,sha256=xgibfrQJJ0kF0opNo3mYqw9QzMY03KV8YqUF9oO-HH8,2553
63
63
  funboost/consumers/rabbitmq_pika_consumer.py,sha256=51IkRUSR0v2v7BUlA8oInx81VGeO5OaD2pk0UXHdY78,5408
64
64
  funboost/consumers/rabbitmq_pika_consumerv0.py,sha256=rIQToBTBqGdjnzMhg0vyZMY87NtK_Uw8ggiTu39JQ_w,4777
65
65
  funboost/consumers/rabbitmq_rabbitpy_consumer.py,sha256=xxINY037pmgF3_lJA-zhf9qUIUx6DdqC7tsUOQL3dL4,1330
@@ -86,38 +86,39 @@ funboost/contrib/queue2queue.py,sha256=4-28ULM7PTbmbOw8DG9rjlMUQCDkJNcUqkmdHAkGg
86
86
  funboost/contrib/redis_consume_latest_msg_broker.py,sha256=ESortBZ2qu_4PBCa3e3FeL2k_PClZNb74_v55HV-BOg,1902
87
87
  funboost/contrib/save_result_status_to_sqldb.py,sha256=AxvD7nHs4sjr9U0kwEZzyPKrsGdU_JzEgzzhh_V1_4w,4071
88
88
  funboost/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
- funboost/core/active_cousumer_info_getter.py,sha256=aA9CDRtQKv08Y85LG1M8STwoGiIu-Vy8L5Yg48Qx27w,9925
90
- funboost/core/booster.py,sha256=GNQLDutqiFH8ymQZgBUi0vhzlBm9VD97usLGlAzjnJY,20287
91
- funboost/core/current_task.py,sha256=AuvrLjLGxfONILzQAd0Vm0nXDsDjf_7gOc3vGy_6r5I,7004
89
+ funboost/core/active_cousumer_info_getter.py,sha256=qxaCeK9Jxe_P4FyVNQI3omtb8lrNnvy_hNc11NmCUCo,12155
90
+ funboost/core/booster.py,sha256=PZ_ab4b663FxkO9KqBPy6kaks03j0jantxCq5JMJWCo,20377
91
+ funboost/core/current_task.py,sha256=6f7IbGZaSnojVxIeyXPkk5LE2yUiRRTJBjTNqwLL2WU,7270
92
92
  funboost/core/exceptions.py,sha256=pLF7BkRJAfDiWp2_xGZqencmwdPiSQI1NENbImExknY,1311
93
93
  funboost/core/fabric_deploy_helper.py,sha256=foieeqlNySuU9axJzNF6TavPjIUSYBx9UO3syVKUiyY,9999
94
94
  funboost/core/funboost_config_getter.py,sha256=b5nAdAmUxahskY-ohB7ptf2gKywFlDA0Fq1cWroxxbs,384
95
95
  funboost/core/funboost_time.py,sha256=a0MacbUBfYk8mf7D3UUyCxH5QJsu8YiGVXwJqPnSQH0,1779
96
- funboost/core/func_params_model.py,sha256=X4ibmg9lmv7kRg2-ym__HicCGK5VJns0DedVxL8S9Hw,22512
96
+ funboost/core/func_params_model.py,sha256=-gSYCyMwOh-f_lEfpaanqPKWFuW7XzABIkc1nApBLCk,22942
97
97
  funboost/core/function_result_status_config.py,sha256=PyjqAQOiwsLt28sRtH-eYRjiI3edPFO4Nde0ILFRReE,1764
98
98
  funboost/core/function_result_status_saver.py,sha256=oG8dEK_APy6FL5oqQI0RPU6OLuWqp4Gv09hwOxPvvNs,9293
99
99
  funboost/core/helper_funs.py,sha256=SsMa7A3iJyLek6v1qRK02kINebDp6kuAmlYkrYLXwQ0,2369
100
100
  funboost/core/kill_remote_task.py,sha256=lfclwtNhMDGLKX2UCpK_wyhnKPKkoxCZxesRA6KHOrc,8186
101
101
  funboost/core/lazy_impoter.py,sha256=yyJqwmbJziMfRTESn9magqso-_8ppl8yzHFCS5qzxkI,5104
102
- funboost/core/loggers.py,sha256=uy5mFLIUvKaVdJZLi6THyxqeuOmp9XEOKrH1Yci0zUM,2354
103
- funboost/core/msg_result_getter.py,sha256=6zRZaoobYRqII7sb8XcbVX7RCWiX5JAU0lXFtd_TiFc,8872
102
+ funboost/core/loggers.py,sha256=YY69MAP_o0Eq-CHp5UNWrKDYpoJsiHZ92E2i_fxcxRI,2358
103
+ funboost/core/msg_result_getter.py,sha256=IqQAO1MXZWK09yfL5RUx1x_0pTcrf0ny0d8MIIcE_sI,8931
104
104
  funboost/core/muliti_process_enhance.py,sha256=tI3178inc5sqPh-jQc0XaTuUD1diIZyHuukBRk1Gp6Y,3595
105
105
  funboost/core/serialization.py,sha256=Q6cAfbaqBCKw0AQwisbMNjOOD0csq0xdes5BHn1Nelo,412
106
106
  funboost/core/task_id_logger.py,sha256=lR19HQcX6Pp8laURCD656xNpF_JP6nLB3zUKI69EWzE,864
107
107
  funboost/core/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
108
  funboost/core/cli/discovery_boosters.py,sha256=mbEyv0bUIGcmgkfXLI_Q1IK1QvVwKyro8XccuuMEA6o,3944
109
109
  funboost/core/cli/funboost_cli_user_templ.py,sha256=XUpKLxRKtYfebPUM8wii64kB0HW8L7j9LnRpT0xCfQI,2243
110
- funboost/core/cli/funboost_fire.py,sha256=OT0SNi9Zb0Tom2E0cWuArQs0obUowAA_rpCF7GdaKPs,5065
110
+ funboost/core/cli/funboost_fire.py,sha256=n2Zny_UJ7zx4kRXD_YzNBHqdHMc7n0SE7gL28tuwiPU,5387
111
111
  funboost/factories/__init__.py,sha256=s7kKKjR1HU5eMjPD6r5b-SXTVMo1zBp2JjOAtkyt5Yo,178
112
112
  funboost/factories/broker_kind__publsiher_consumer_type_map.py,sha256=-kKhV65KnRf86b353PJuaEMXMolfV4B2CtTF1wD1kFQ,10189
113
113
  funboost/factories/consumer_factory.py,sha256=EaAw3OZJkGepkQxKkDvMshHjIVOQva_N6nUEhLO4JwU,1500
114
114
  funboost/factories/publisher_factotry.py,sha256=4651sxnbIAi6sFEUQdlUuv8UkbMQIE_Pbzm-1DimAs8,2535
115
- funboost/function_result_web/app.py,sha256=x8iQXgZQ3vPsg_2eQTyGxGQt4gGFrzgGS3xOh3Ghlyw,10076
116
- funboost/function_result_web/functions.py,sha256=c9KBiSMZbAhPJSEJsGO-Bw6on7HikqTn-1gNsGwxssk,7977
117
- funboost/function_result_web/__pycache__/app.cpython-37.pyc,sha256=e5CUQuEs3NcrLqgeA3S2X57EbbJVepdF3kyYaMxyhj4,7850
118
- funboost/function_result_web/__pycache__/app.cpython-39.pyc,sha256=2OYV84KDDsXsqcF4moy_Y_IY8EAxJq1oxMJYj1Aeo3Y,8314
119
- funboost/function_result_web/__pycache__/functions.cpython-37.pyc,sha256=nuuCYaGB70NR17uDq11HriUP8QnZ1cSxu1PTiFYmfzE,4123
120
- funboost/function_result_web/__pycache__/functions.cpython-39.pyc,sha256=Hu-PbDvSIGQLydFIrntmqgtuyZs_WiAGW8VID783ZUQ,4194
115
+ funboost/function_result_web/app.py,sha256=a10Ctvdt_OgjFMe4MrSUdC9edhvb2dDp4YWGfMzT3b0,11624
116
+ funboost/function_result_web/app_debug_start.py,sha256=OP79Wp3QWRjaKNAKXeW4WZ4-UCGgeYyT5ppykblMK8E,152
117
+ funboost/function_result_web/functions.py,sha256=iPaYcg7reUFXe2HclG6jzavQPcjwLOt3rUdZ7-FghXE,11286
118
+ funboost/function_result_web/__pycache__/app.cpython-37.pyc,sha256=xOqvwi3wEmHCKMhLYwkKIk0mG5MEKrQ4mljb1fOiMVI,9809
119
+ funboost/function_result_web/__pycache__/app.cpython-39.pyc,sha256=qdvJ3NlUvov7tAmCl0WfNTOUh0NVpeAST4b8OLHpLXw,9828
120
+ funboost/function_result_web/__pycache__/functions.cpython-37.pyc,sha256=NDy7JvbD5Q_VCWkXSV2jTpgdbOWNKDpHQbqm3c7523Q,5940
121
+ funboost/function_result_web/__pycache__/functions.cpython-39.pyc,sha256=HY1LCsLzLfDgzgYc5_IgpQ8LFhWP9PnKh5V05XM_rJ4,6026
121
122
  funboost/function_result_web/static/assets/css/custom.css,sha256=3brvjy2aBOTIXcTUK4NV6dX5wFRqx6K2aLu_jQn63jM,7674
122
123
  funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css,sha256=JHGEmB629pipTkMag9aMaw32I8zle24p3FpsEeI6oZU,42839
123
124
  funboost/function_result_web/static/assets/img/user.jpg,sha256=Vz1A99gho-0bKV67Pt2s_zT25mWhNcPe0mWG-0mRl9U,23610
@@ -149,21 +150,23 @@ funboost/function_result_web/static/images/tick.png,sha256=S9dZYN4HQzw7JsWPw3ut1
149
150
  funboost/function_result_web/static/images/user.png,sha256=HxLjNc83WZzZEscZRdmVhGKlPXNdp_EKmmYxafuyb3g,622
150
151
  funboost/function_result_web/static/js/bootstrap-datetimepicker.min.js,sha256=7sxJBHfaUsZT4Y0gPBGr5dFnrfbzYzEY8pOlCne4AI8,38511
151
152
  funboost/function_result_web/static/js/echarts.min.js,sha256=VMlq3MWV-1sK2_KCdtO4MhO9lRCg-jgHZNLRxrljrTs,1204581
153
+ funboost/function_result_web/static/js/form-memory.js,sha256=lXCTN7ilpkUq3jugnJ7Fb_vEGDj8RzPrBex2964MjW4,3920
152
154
  funboost/function_result_web/static/js/jquery-1.11.0.min.js,sha256=ryQZ3RXgnqkTz-lNEw-YcEhnMuV3ZODwLqOEbyBBRu4,96383
153
155
  funboost/function_result_web/static/js/moment-with-locales.min.js,sha256=AdQN98MVZs44Eq2yTwtoKufhnU-uZ7v2kXnD5vqzZVo,336451
154
156
  funboost/function_result_web/static/js/select2.min.js,sha256=16c3mSb2OxHyGKYVRD8ATQP8SZvBuvUNQUKxsqdsN3I,70852
157
+ funboost/function_result_web/static/js_cdn/chart.js,sha256=emuqjskh-2kvldBdhmL_d1aRbecbVIrDlL2hr4ERtU0,206962
155
158
  funboost/function_result_web/static/js_cdn/bootstrap/3.3.7/js/bootstrap.min.js,sha256=NkYOSU5MYoRDr97UCydDte3ppKdvtPe57yNFzH5Z_WQ,37051
156
- funboost/function_result_web/static/js_cdn/tabulator-tables@5.5.0/dist/js/tabulator.min.js,sha256=pY8YQPpl60XWlUY9l_Gq5ZZ8YaBqDEEkeXsbgByWFy8,390786
157
- funboost/function_result_web/templates/about.html,sha256=FPuQydC3fQJcxJR0KRZjPFIaE9b0yEHQ8PFGt4rhxxw,2855
158
- funboost/function_result_web/templates/conusme_speed.html,sha256=bir1OP6pLrSDRJDQQNEaQ7SPLkY6tOiOQ5FBcfRllH4,9100
159
- funboost/function_result_web/templates/fun_result_table.html,sha256=3GQVXR5fkdBt_ivA6bPpL7DBkWymFWdZxCbzxdlAiDw,18948
160
- funboost/function_result_web/templates/index.html,sha256=e4559iUlQmMrwuxhXNcQbdQE_q9O3G4rs_by3OiM0dg,7268
159
+ funboost/function_result_web/static/js_cdn/tabulator-tables@5.5.0/dist/js/tabulator.min.js,sha256=4pzeFofM4NClu9YOgnul_3io2X31ZB3HtdeKOb3J1UU,390787
160
+ funboost/function_result_web/templates/about.html,sha256=m5ZUVmAbvgBdXXYJRGS7JLHQZMB6RuPu-9PsBp4Hwvc,2416
161
+ funboost/function_result_web/templates/conusme_speed.html,sha256=0Txe47pwad8166BzivsrHEIb0cUS-FlQBrBNYrciT1g,9136
162
+ funboost/function_result_web/templates/fun_result_table.html,sha256=KBi9XBBgF3lpgf7N7IQTE0dt-8uz-wg8dj5BYhO_ooE,18984
163
+ funboost/function_result_web/templates/index.html,sha256=2eHJau1boHAu1N3VMOax5bzUP6UCBGN0SyFrKlDRryM,9887
161
164
  funboost/function_result_web/templates/index_backup.html,sha256=qwUWHyQFrbSVSnZUjU5E9Zxy6a9mEJF_BdH0HeUxXOU,20045
162
- funboost/function_result_web/templates/index_不可折叠.html,sha256=akzwfqVDqn1I4Y1DwkDoovnMRU7GbZKoSnwbiijKV2k,4828
163
165
  funboost/function_result_web/templates/login.html,sha256=q37dj7O0LeyiV38Zd5P1Qn_qmhjdFomuYTRY1Yk48Bo,2007
164
- funboost/function_result_web/templates/queue_op.html,sha256=BOhAhxnnImslq4kvI0pRAVuf4pWXDxQv58AJwicopUY,25303
165
- funboost/function_result_web/templates/running_consumer_by_ip.html,sha256=h_W5HsL4gvKpNwj6p_kNLjOFgSVDJnbBV69wz3waS5w,10210
166
- funboost/function_result_web/templates/running_consumer_by_queue_name.html,sha256=J5wBFskuFD74LprofXKFc7l-9tnQRi01TZIJ9CQtTkQ,10263
166
+ funboost/function_result_web/templates/queue_op.html,sha256=8de8jX47zIJ-g-zi6AgcsvfXY3IFpjuoQCzmzsjfK-k,46925
167
+ funboost/function_result_web/templates/rpc_call.html,sha256=CpKeOOlaLhkn4v7iNY8J9PAp-38j32-La9JIkaQVig0,15600
168
+ funboost/function_result_web/templates/running_consumer_by_ip.html,sha256=2Rcxbi80c1JEIRCnNe1MG55axdb0vBlkB6yL9rxw53c,10248
169
+ funboost/function_result_web/templates/running_consumer_by_queue_name.html,sha256=r5EYlfp0fE8RFWzI0k3K571EUmirwcPX9NdnSEfAWiQ,10301
167
170
  funboost/publishers/__init__.py,sha256=xqBHlvsJQVPfbdvP84G0LHmVB7-pFBS7vDnX1Uo9pVY,131
168
171
  funboost/publishers/base_publisher.py,sha256=3KAdvkHidkM_qTmNhZlZ_e8a73rsdObZZ5ofNceKkg8,17998
169
172
  funboost/publishers/celery_publisher.py,sha256=uc9N1uLW74skUCw8dsnvxORM2O3cy4SiI7tUZRmvkHA,2336
@@ -187,7 +190,7 @@ funboost/publishers/nsq_publisher.py,sha256=ySUUyfAMRPSozWYGzAgOMCR_MF0J1iZTDFVU
187
190
  funboost/publishers/peewee_publisher.py,sha256=RsYAqBKf_ZLxkGJeZPWExzG4cpUac7weCeNhcSQ9hZc,1095
188
191
  funboost/publishers/persist_queue_publisher.py,sha256=wuKUU3DRiDy4Ab67m9_0ee65uXhqHtfnVWY43JuQFdY,2594
189
192
  funboost/publishers/pulsar_publisher.py,sha256=-Qka_oTtpiBMEzu8oqQJteVbGuWpDHd0sgQoNd7N_2k,1248
190
- funboost/publishers/rabbitmq_amqpstorm_publisher.py,sha256=-c2Xyxs2yxEWr6TdnYgjVd1sGvr7uLRs2cdOREpJErs,3214
193
+ funboost/publishers/rabbitmq_amqpstorm_publisher.py,sha256=BUGvfjm3R8Vj-ZMw5QogkVR-pHh2JNIoXJBR6_w2I2E,3218
191
194
  funboost/publishers/rabbitmq_pika_publisher.py,sha256=QygZv96tYmfJcs8Dukv3J_x134gvCOzGkILQRE6toU0,2325
192
195
  funboost/publishers/rabbitmq_rabbitpy_publisher.py,sha256=GGXPKxE6-mAjqMIKqwvR9d7L-zuJQcQoU9uRsQLNGas,1953
193
196
  funboost/publishers/redis_publisher.py,sha256=EDnQSt73FE2PGq0WHyvsMuaoD_6wp_tuZveWrMF7iLY,3439
@@ -219,7 +222,7 @@ funboost/utils/block_exit.py,sha256=BnfxNYo3lnmhk686RAEoc4u3D4RU_iEMMMgu5L8gIuI,
219
222
  funboost/utils/bulk_operation.py,sha256=B4FBxlz5f4oqlKDWqer7axn4gnDSfsYoMW2zSUCnGcQ,10101
220
223
  funboost/utils/class_utils.py,sha256=xtP9RU_5vVnWye7QXXqkloDzwVE5N3N-4_2fUZNfXlo,3591
221
224
  funboost/utils/class_utils2.py,sha256=ND45cMR385xG4fOmwWDHxXFOmcEi1ZG8B0iN8_6ZAeo,3015
222
- funboost/utils/ctrl_c_end.py,sha256=uSlMEbcyrbeosZ6E816AwlXxVZ7KuExwMfz6WJXlyB0,439
225
+ funboost/utils/ctrl_c_end.py,sha256=qqKReuhvFbmdOhXqfnUbY99KrCo-sJWLxyUkxId78rY,1192
223
226
  funboost/utils/custom_pysnooper.py,sha256=7yXLKEMY_JjPRRt0Y0N-wV2CFhILlYNh40Y6uRBUaj8,5923
224
227
  funboost/utils/decorators.py,sha256=gpwof-Nw__iFjeJjVQWx1l-scnxTivxcCI_0XqhMu6c,27885
225
228
  funboost/utils/develop_log.py,sha256=Wsx0ongGjTit5xqgk1BztYlVEkC6d0-Y7GENXLedVqY,271
@@ -248,7 +251,7 @@ funboost/utils/dependency_packages/mongomq/test.py,sha256=Tcmme3U3KXFSkdknO71bge
248
251
  funboost/utils/dependency_packages/mongomq/utils.py,sha256=ljhcLhNf3yOc7IgnuRdFqLtwTGynRNd2uXZNRvStAL0,377
249
252
  funboost/utils/dependency_packages_in_pythonpath/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
250
253
  funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py,sha256=eOaK0Cr1yAmLcHhOM5-nV9XxXhQFZQkiaBECY65sFuc,341
251
- funboost/utils/dependency_packages_in_pythonpath/readme.md,sha256=rlYsPSNqIdhp8L8WOJiONQLrPnPhrdFLdnZr2lAg1n0,920
254
+ funboost/utils/dependency_packages_in_pythonpath/readme.md,sha256=gNWQveLrJxQrKnWGlcCT0jkO-tc13I6zwdUOU1ftsxA,982
252
255
  funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc,sha256=XpiufbSphxt8UXSMqXz9vOGejT4noRAKE3dnfsEGvAg,187
253
256
  funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-313.pyc,sha256=n9egw99NJyOXwjRjq5tgNKC0GlCjFb54efJ1XeBnZC0,175
254
257
  funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc,sha256=Oy1-_q-VLcFLQ7RRp8B-fbBkNOb2SepePLYW4L5DQ6U,165
@@ -265,7 +268,7 @@ funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py,sha256=S
265
268
  funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py,sha256=CnB9LpvykAEXEdQyBEcgUU7iHxwNF3xuGzX7UYuUbiQ,11651
266
269
  funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py,sha256=qTxLRo5EqoHZIGqMguzLm90mtThBRYje_FaZz-fDbhg,427
267
270
  funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
- funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md,sha256=BUZVchvn4henUdpA48IuF6SSSsnzdsMSff8l0MU4R2A,617
271
+ funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md,sha256=gxkZR770OAlGDCx541CAam-xxScp2CCkDTogbHrMI-E,679
269
272
  funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py,sha256=ldPwRIOWVskKsItBwFqbqPfraMlFsGs42_ZDXtxza5U,12536
270
273
  funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py,sha256=90Dgj62Q9ABGVAwAPwufo3OKM2s0ws6LeQMZg8ifJb0,1284
271
274
  funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc,sha256=PGpc0JrGU6UjKZ7WgxlpsCL2OuhJhWpE9WrxMHREtPc,1696
@@ -324,9 +327,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
324
327
  funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
325
328
  funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
326
329
  funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
327
- funboost-48.7.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
328
- funboost-48.7.dist-info/METADATA,sha256=DCsulwp0lhJQiY3jq8ke9LMQpChKc_3Ewss2naLEksg,34095
329
- funboost-48.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
330
- funboost-48.7.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
331
- funboost-48.7.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
332
- funboost-48.7.dist-info/RECORD,,
330
+ funboost-48.9.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
331
+ funboost-48.9.dist-info/METADATA,sha256=JxCma5abiSNXdfWjYodgKxq6QPjxzKwhEj0eO2U4y9k,39540
332
+ funboost-48.9.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
333
+ funboost-48.9.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
334
+ funboost-48.9.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
335
+ funboost-48.9.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: bdist_wheel (0.41.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5