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

funboost/__init__.py CHANGED
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
13
13
  这段注释说明和使用的用户无关,只和框架开发人员有关.
14
14
  '''
15
15
 
16
- __version__ = "49.0"
16
+ __version__ = "49.1"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -221,10 +221,7 @@ def hearbeat_info_partion_by_ip():
221
221
  def get_queue_params_and_active_consumers():
222
222
  return jsonify(QueueConusmerParamsGetter().get_queue_params_and_active_consumers())
223
223
 
224
- @app.route('/queue/message_count/<broker_kind>/<queue_name>')
225
- def get_message_count(broker_kind,queue_name):
226
- publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name=queue_name, broker_kind=broker_kind, publish_msg_log_use_full_msg=True))
227
- return jsonify({'count':publisher.get_message_count(),'success':True})
224
+
228
225
 
229
226
 
230
227
  @app.route('/queue/clear/<broker_kind>/<queue_name>',methods=['POST'])
@@ -243,9 +240,27 @@ def resume_consume(queue_name):
243
240
  RedisMixin().redis_db_frame.hset(RedisKeys.REDIS_KEY_PAUSE_FLAG, queue_name,'0')
244
241
  return jsonify({'success':True})
245
242
 
246
- @app.route('/queue/get_msg_num',methods=['GET'])
247
- def get_msg_num():
243
+ @app.route('/queue/get_msg_num_all_queues',methods=['GET'])
244
+ def get_msg_num_all_queues():
245
+ """这个是通过消费者周期每隔10秒上报到redis的,性能好。不需要实时获取每个消息队列,直接从redis读取所有队列的消息数量"""
248
246
  return jsonify(QueueConusmerParamsGetter().get_msg_num(ignore_report_ts=True))
247
+
248
+ @app.route('/queue/message_count/<broker_kind>/<queue_name>')
249
+ def get_message_count(broker_kind,queue_name):
250
+ """这个是实时获取每个消息队列的消息数量,性能差,但是可以实时获取每个消息队列的消息数量"""
251
+ queue_params = QueueConusmerParamsGetter().get_queue_params()
252
+ for queue_namex,params in queue_params.items():
253
+ if params['broker_kind'] == broker_kind and queue_namex == queue_name:
254
+ publisher = BoostersManager.get_cross_project_publisher(
255
+ PublisherParams(queue_name=queue_name,
256
+ broker_kind=broker_kind,
257
+ broker_exclusive_config=params['broker_exclusive_config'],
258
+ publish_msg_log_use_full_msg=True))
259
+ return jsonify({'count':publisher.get_message_count(),'success':True})
260
+ return jsonify({'success':False,'msg':f'队列{queue_name}不存在'})
261
+
262
+ publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name=queue_name, broker_kind=broker_kind, publish_msg_log_use_full_msg=True))
263
+ return jsonify({'count':publisher.get_message_count(),'success':True})
249
264
 
250
265
  @app.route('/rpc/rpc_call',methods=['POST'])
251
266
  def rpc_call():
@@ -135,7 +135,7 @@
135
135
  // 页面加载完成后立即获取所有队列
136
136
  $(document).ready(function () {
137
137
  $.ajax({
138
- url: "{{ url_for('get_msg_num')}}",
138
+ url: "{{ url_for('get_msg_num_all_queues')}}",
139
139
  data: {},
140
140
  async: true,
141
141
  success: function (result) {
@@ -59,7 +59,7 @@ class ThreadPoolExecutorForAps(BasePoolExecutor):
59
59
  ThreadPoolExecutor constructor
60
60
  """
61
61
 
62
- def __init__(self, max_workers=10, pool_kwargs=None):
62
+ def __init__(self, max_workers=100, pool_kwargs=None):
63
63
  pool = ThreadPoolExecutorShrinkAble(int(max_workers), )
64
64
  super().__init__(pool)
65
65
 
@@ -76,9 +76,23 @@ class ApsJobAdder:
76
76
  next_run_time=undefined, jobstore='default', executor='default',
77
77
  replace_existing=False, **trigger_args, ):
78
78
  """
79
- 这里的入参都是和apscheduler的add_job的入参一样的,funboost作者没有创造新的入参。
79
+ 1. 这里的入参都是和apscheduler的add_job的入参一样的,funboost作者没有创造新的入参。
80
80
  但是官方apscheduler的入参第一个入参是函数,
81
81
  funboost的ApsJobAdder对象.add_push_job入参去掉了函数,因为类的实例化时候会把函数传进来,不需要再麻烦用户一次了。
82
+
83
+
84
+ 2. add_push_job目的是 定时运行 消费函数.push方法发布消息到消费队列, 而不是 定时直接运行 消费函数自身。
85
+
86
+ 相当于 aps_obj.add_job(消费函数.push, trigger, args, kwargs, id, name, .....)
87
+ 那为什么 不直接使用 aps_obj.add_job(消费函数.push, trigger, args, kwargs, id, name, .....) 呢?因为 消费函数.push是实例方法,
88
+ 如果redis作为 jobstore, 消费函数.push 会报错,因为 消费函数.push 是实例方法,不能被序列化。只有普通函数和静态方法才能被序列化。
89
+ 所以开发了一个 add_push_job方法, 里面再去用 add_job, 使用 push_fun_params_to_broker 这个普通函数作为 add_job 的第一个入参,
90
+ 这个普通函数里面再去调用 消费函数.push 方法, 相当于是曲线救国避免 aps_obj.add_job(消费函数.push 不可序列化问题。
91
+
92
+
93
+ 3. 用户也可以自己定义一个普通函数my_push,你这个普通函数my_push 里面去调用消费函数.push方法;然后使用 aps_obj.add_job 使用你自己定义的这个my_push作为第一个入参。
94
+ 这种方式更容易你去理解,和apscheduler 官方库的原生写法一模一样。 但是不如 add_push_job 方便,因为 需要你亲自给每个消费函数分别定义一个普通函数my_push。
95
+
82
96
  """
83
97
 
84
98
  # if not getattr(self.aps_obj, 'has_started_flag', False):
@@ -118,14 +132,16 @@ if __name__ == '__main__':
118
132
  ApsJobAdder(sum_two_numbers, job_store_kind='redis').add_push_job(
119
133
  trigger='date',
120
134
  run_date='2025-01-17 23:25:40',
121
- args=(7, 8)
135
+ args=(7, 8),
136
+ id='date_job1'
122
137
  )
123
138
 
124
139
  # 方式2:固定间隔执行
125
140
  ApsJobAdder(sum_two_numbers, job_store_kind='memory').add_push_job(
126
141
  trigger='interval',
127
142
  seconds=5,
128
- args=(4, 6)
143
+ args=(4, 6),
144
+ id='interval_job1'
129
145
  )
130
146
 
131
147
  # 方式3:使用cron表达式定时执行
@@ -1,5 +1,5 @@
1
1
  ---
2
- noteId: "6a466cf0411e11f0a66f39b062f95544"
2
+ noteId: "6d96e13045e411f0ab0bf59d9f569ed4"
3
3
  tags: []
4
4
 
5
5
  ---
@@ -1,5 +1,5 @@
1
1
  ---
2
- noteId: "69fa48c0411e11f0a66f39b062f95544"
2
+ noteId: "6d97084045e411f0ab0bf59d9f569ed4"
3
3
  tags: []
4
4
 
5
5
  ---
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 49.0
3
+ Version: 49.1
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
@@ -28,7 +28,7 @@ Classifier: Topic :: Software Development :: Libraries
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE
30
30
  Requires-Dist: nb-log >=13.2
31
- Requires-Dist: nb-libs >=1.8
31
+ Requires-Dist: nb-libs >=1.9
32
32
  Requires-Dist: nb-time >=2.4
33
33
  Requires-Dist: pymongo >=4.6.3
34
34
  Requires-Dist: AMQPStorm ==2.10.6
@@ -1,4 +1,4 @@
1
- funboost/__init__.py,sha256=VAxEZKSn99EB43-gXfa8yQ1X7YOgowZRTo9NEQQCuR0,4093
1
+ funboost/__init__.py,sha256=w8fr_Qucjc_R_SrKCTAz3uB4kfMM_gSboSPNpvMX-LI,4093
2
2
  funboost/__init__old.py,sha256=9Kv3cPLnPkbzMRnuJFVkPsuDdx1CdcSIuITkpdncZSc,20382
3
3
  funboost/__main__.py,sha256=BetXBv7PkVeeK-UENiFq_KEEIzvObMI0rd8S1DHRdLU,1139
4
4
  funboost/constant.py,sha256=LreGf6HJ0TCj0HQKvfP4T5ZR9-KJUU7-SkoH1BM1HFM,9164
@@ -112,10 +112,10 @@ funboost/factories/__init__.py,sha256=s7kKKjR1HU5eMjPD6r5b-SXTVMo1zBp2JjOAtkyt5Y
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=a10Ctvdt_OgjFMe4MrSUdC9edhvb2dDp4YWGfMzT3b0,11624
115
+ funboost/function_result_web/app.py,sha256=pFtWgnndjOucnJlf4HDhPKyBcF3wD2WbTbrtVs1JZ5Y,12673
116
116
  funboost/function_result_web/app_debug_start.py,sha256=OP79Wp3QWRjaKNAKXeW4WZ4-UCGgeYyT5ppykblMK8E,152
117
117
  funboost/function_result_web/functions.py,sha256=iPaYcg7reUFXe2HclG6jzavQPcjwLOt3rUdZ7-FghXE,11286
118
- funboost/function_result_web/__pycache__/app.cpython-37.pyc,sha256=xOqvwi3wEmHCKMhLYwkKIk0mG5MEKrQ4mljb1fOiMVI,9809
118
+ funboost/function_result_web/__pycache__/app.cpython-37.pyc,sha256=6457vOwd4y-_-zAfT_3hRhxuTbareCucMlczqDdkYwk,10388
119
119
  funboost/function_result_web/__pycache__/app.cpython-39.pyc,sha256=qdvJ3NlUvov7tAmCl0WfNTOUh0NVpeAST4b8OLHpLXw,9828
120
120
  funboost/function_result_web/__pycache__/functions.cpython-37.pyc,sha256=NDy7JvbD5Q_VCWkXSV2jTpgdbOWNKDpHQbqm3c7523Q,5940
121
121
  funboost/function_result_web/__pycache__/functions.cpython-39.pyc,sha256=HY1LCsLzLfDgzgYc5_IgpQ8LFhWP9PnKh5V05XM_rJ4,6026
@@ -164,7 +164,7 @@ funboost/function_result_web/templates/index.html,sha256=2eHJau1boHAu1N3VMOax5bz
164
164
  funboost/function_result_web/templates/index_backup.html,sha256=qwUWHyQFrbSVSnZUjU5E9Zxy6a9mEJF_BdH0HeUxXOU,20045
165
165
  funboost/function_result_web/templates/login.html,sha256=q37dj7O0LeyiV38Zd5P1Qn_qmhjdFomuYTRY1Yk48Bo,2007
166
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
167
+ funboost/function_result_web/templates/rpc_call.html,sha256=qFznWysEFTvJKUQYqnJaapB833XTjfa8UlEKNk2nFxI,15611
168
168
  funboost/function_result_web/templates/running_consumer_by_ip.html,sha256=2Rcxbi80c1JEIRCnNe1MG55axdb0vBlkB6yL9rxw53c,10248
169
169
  funboost/function_result_web/templates/running_consumer_by_queue_name.html,sha256=r5EYlfp0fE8RFWzI0k3K571EUmirwcPX9NdnSEfAWiQ,10301
170
170
  funboost/publishers/__init__.py,sha256=xqBHlvsJQVPfbdvP84G0LHmVB7-pFBS7vDnX1Uo9pVY,131
@@ -214,8 +214,8 @@ funboost/queues/sqla_queue.py,sha256=b-2QPvvuMxklm41ibZhGKehaAV9trXBQFCOHzgThx_s
214
214
  funboost/timing_job/__init__.py,sha256=_rIiU7pMXe-IwUCeok50hSiWXoUoMBar22u6-pZLlAI,265
215
215
  funboost/timing_job/apscheduler_use_mysql_store.py,sha256=ss92DiSLzbWuVIo19sTLgC99GessltWLOlqqOd4AIL4,471
216
216
  funboost/timing_job/apscheduler_use_redis_store.py,sha256=cGqwULlYhoApzheDliTVn1CN3Ks_cSGDjObEhbSV9IU,2990
217
- funboost/timing_job/timing_job_base.py,sha256=IlTZBmq53wftsQfLl2M-jLJb7adGXQr5e1jCyGlKF0M,9582
218
- funboost/timing_job/timing_push.py,sha256=0inlo-XtHcEWQJVzGQHkTB-40rdIoduREdP9Ux8Yuh8,5930
217
+ funboost/timing_job/timing_job_base.py,sha256=Pd_U2Ot-ds91x-2kzznXS8zx_oVAE16x7V0KJUAtljw,9583
218
+ funboost/timing_job/timing_push.py,sha256=QzIg8_apyYZBpkGX2G_mmAHRcY-VbyhftK-Bdr5CKm4,7382
219
219
  funboost/utils/__init__.py,sha256=rAyXE7lgCo_3VdMvGrIJiqsTHv2nZPTJDTj1f6s_KgE,586
220
220
  funboost/utils/apscheduler_monkey.py,sha256=CcUISbqX6nMWSxr_QjZ26IvvhUk_ojYZWRaKenpsKfE,3124
221
221
  funboost/utils/block_exit.py,sha256=BnfxNYo3lnmhk686RAEoc4u3D4RU_iEMMMgu5L8gIuI,96
@@ -251,7 +251,7 @@ funboost/utils/dependency_packages/mongomq/test.py,sha256=Tcmme3U3KXFSkdknO71bge
251
251
  funboost/utils/dependency_packages/mongomq/utils.py,sha256=ljhcLhNf3yOc7IgnuRdFqLtwTGynRNd2uXZNRvStAL0,377
252
252
  funboost/utils/dependency_packages_in_pythonpath/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
253
  funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py,sha256=eOaK0Cr1yAmLcHhOM5-nV9XxXhQFZQkiaBECY65sFuc,341
254
- funboost/utils/dependency_packages_in_pythonpath/readme.md,sha256=9Od4PVCKPDlhCmOs8FJ02PYqqefYuugP4aRSq5otQzA,982
254
+ funboost/utils/dependency_packages_in_pythonpath/readme.md,sha256=uONAElG6s0hHEOB3U6ubvkrCXoaTgpPFjcxmVTL-1y8,982
255
255
  funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc,sha256=XpiufbSphxt8UXSMqXz9vOGejT4noRAKE3dnfsEGvAg,187
256
256
  funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-313.pyc,sha256=n9egw99NJyOXwjRjq5tgNKC0GlCjFb54efJ1XeBnZC0,175
257
257
  funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc,sha256=Oy1-_q-VLcFLQ7RRp8B-fbBkNOb2SepePLYW4L5DQ6U,165
@@ -268,7 +268,7 @@ funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py,sha256=S
268
268
  funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py,sha256=CnB9LpvykAEXEdQyBEcgUU7iHxwNF3xuGzX7UYuUbiQ,11651
269
269
  funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py,sha256=qTxLRo5EqoHZIGqMguzLm90mtThBRYje_FaZz-fDbhg,427
270
270
  funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
271
- funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md,sha256=vEFfXof1Zx5dVeGynH8tB4xZ75bSAJKNX-0ixoPXO-k,679
271
+ funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md,sha256=ALgrpiwrKqq8SMrWN2cwtEZ9rO67ju_UWsN3hqsVvbs,679
272
272
  funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py,sha256=ldPwRIOWVskKsItBwFqbqPfraMlFsGs42_ZDXtxza5U,12536
273
273
  funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py,sha256=90Dgj62Q9ABGVAwAPwufo3OKM2s0ws6LeQMZg8ifJb0,1284
274
274
  funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc,sha256=PGpc0JrGU6UjKZ7WgxlpsCL2OuhJhWpE9WrxMHREtPc,1696
@@ -327,9 +327,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
327
327
  funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
328
328
  funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
329
329
  funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
330
- funboost-49.0.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
331
- funboost-49.0.dist-info/METADATA,sha256=1J6S7X6a_iNse-4tS2MJ9IfxW-Lys4xSu7Vo2YtYFjs,39804
332
- funboost-49.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
333
- funboost-49.0.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
334
- funboost-49.0.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
335
- funboost-49.0.dist-info/RECORD,,
330
+ funboost-49.1.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
331
+ funboost-49.1.dist-info/METADATA,sha256=PGql-fv48PjcLBvgtQRrIqM90RBirSAv_0E-4tWJ2rQ,39804
332
+ funboost-49.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
333
+ funboost-49.1.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
334
+ funboost-49.1.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
335
+ funboost-49.1.dist-info/RECORD,,