funboost 47.4__py3-none-any.whl → 47.6__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__ = "47.4"
16
+ __version__ = "47.6"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
funboost/core/booster.py CHANGED
@@ -17,12 +17,13 @@ from funboost.core.loggers import flogger, develop_logger, logger_prompt
17
17
  from functools import wraps
18
18
 
19
19
  from funboost.core.exceptions import BoostDecoParamsIsOldVersion
20
- from funboost.core.func_params_model import BoosterParams, FunctionResultStatusPersistanceConfig, PriorityConsumingControlConfig
20
+ from funboost.core.func_params_model import BoosterParams, FunctionResultStatusPersistanceConfig, PriorityConsumingControlConfig, PublisherParams
21
21
 
22
22
  from funboost.factories.consumer_factory import get_consumer
23
+ from funboost.factories.publisher_factotry import get_publisher
24
+ from funboost.publishers.base_publisher import AbstractPublisher
23
25
  from collections import defaultdict
24
26
 
25
-
26
27
  from funboost.core.msg_result_getter import AsyncResult, AioAsyncResult
27
28
 
28
29
 
@@ -81,7 +82,7 @@ class Booster:
81
82
  flogger.warning(f'''你的 {queue_name} 队列, funboost 40.0版本以后: {BoostDecoParamsIsOldVersion.new_version_change_hint}''')
82
83
  boost_params_merge = boost_params.copy()
83
84
  boost_params_merge.update_from_dict(kwargs)
84
- self.boost_params:BoosterParams = boost_params_merge
85
+ self.boost_params: BoosterParams = boost_params_merge
85
86
  self.queue_name = boost_params_merge.queue_name
86
87
 
87
88
  def __str__(self):
@@ -156,10 +157,10 @@ class Booster:
156
157
  return AioAsyncResult(async_result.task_id, )
157
158
 
158
159
  async def aio_publish(self, msg: typing.Union[str, dict], task_id=None,
159
- priority_control_config: PriorityConsumingControlConfig = None) -> AioAsyncResult:
160
+ priority_control_config: PriorityConsumingControlConfig = None) -> AioAsyncResult:
160
161
  """asyncio 生态下发布消息,因为同步push只需要消耗不到1毫秒,所以基本上大概可以直接在asyncio异步生态中直接调用同步的push方法,
161
162
  但为了更好的防止网络波动(例如发布消息到外网的消息队列耗时达到10毫秒),可以使用aio_push"""
162
- async_result = await simple_run_in_executor(self.publish,msg,task_id,priority_control_config)
163
+ async_result = await simple_run_in_executor(self.publish, msg, task_id, priority_control_config)
163
164
  return AioAsyncResult(async_result.task_id, )
164
165
 
165
166
  # noinspection PyMethodMayBeStatic
@@ -206,7 +207,7 @@ class Booster:
206
207
  fabric_deploy(self, **params)
207
208
 
208
209
 
209
- boost = Booster # @boost 后消费函数. 不能自动补全方法就用 Booster就可以。 2024版本的 pycharm抽风了,@boost的消费函数不能自动补全提示 .consume .push 这些方法。
210
+ boost = Booster # @boost 后消费函数. 不能自动补全方法就用 Booster就可以。 2024版本的 pycharm抽风了,@boost的消费函数不能自动补全提示 .consume .push 这些方法。
210
211
  task_deco = boost # 两个装饰器名字都可以。task_deco是原来名字,兼容一下。
211
212
 
212
213
 
@@ -298,6 +299,25 @@ class BoostersManager:
298
299
  booster = Booster(boost_params)(boost_params.consuming_function)
299
300
  return booster
300
301
 
302
+ queue_name__cross_project_publisher_map = {}
303
+
304
+ @classmethod
305
+ def get_cross_project_publisher(cls, publisher_params: PublisherParams) -> AbstractPublisher:
306
+ """
307
+ 跨不同的项目,发布消息。例如proj1中定义有fun1消费函数,但proj2无法直接到日proj1的函数,无法直接 fun1.push 来发布消息
308
+ 可以使用这个方法,获取一个publisher。
309
+
310
+ publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name='proj1_queue', broker_kind=BrokerEnum.SQLITE_QUEUE))
311
+ publisher.publish({'x': aaa})
312
+ """
313
+ pid = os.getpid()
314
+ key = (pid, publisher_params.queue_name)
315
+ if key not in cls.queue_name__cross_project_publisher_map:
316
+ publisher = get_publisher(publisher_params)
317
+ publisher.push = lambda *args, **kwargs: print('跨项目虚拟publisher不支持push方法,请使用publish来发布消息')
318
+ cls.queue_name__cross_project_publisher_map[key] = publisher
319
+ return cls.queue_name__cross_project_publisher_map[key]
320
+
301
321
  @classmethod
302
322
  def push(cls, queue_name, *args, **kwargs):
303
323
  """push发布消息到消息队列 ;
@@ -323,7 +343,7 @@ class BoostersManager:
323
343
  consume = consume_queues
324
344
 
325
345
  @classmethod
326
- def consume_all_queues(cls,block=True):
346
+ def consume_all_queues(cls, block=True):
327
347
  """
328
348
  启动所有消息队列名的消费,无需一个一个函数亲自 funxx.consume()来启动,多个函数队列在当前同一个进程内启动消费.
329
349
  这种方式节约总的内存,但无法利用多核cpu
@@ -31,6 +31,8 @@ class FunboostLazyImpoter(SingletonBaseNew):
31
31
  from funboost.core import booster
32
32
  return booster.Booster
33
33
 
34
+
35
+
34
36
  # @property
35
37
  # @cached_method_result
36
38
  # def get_current_taskid(self):
@@ -260,6 +260,8 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
260
260
  # print(self.publish_params_checker.position_arg_name_list)
261
261
  # print(func_args)
262
262
  func_args_list = list(func_args)
263
+
264
+ # print(func_args_list)
263
265
  if self.publisher_params.consuming_function_kind == FunctionKind.CLASS_METHOD:
264
266
  # print(self.publish_params_checker.all_arg_name[0])
265
267
  # func_args_list.insert(0, {'first_param_name': self.publish_params_checker.all_arg_name[0],
@@ -12,7 +12,8 @@ import threading
12
12
  from apscheduler.schedulers.background import BackgroundScheduler
13
13
  # noinspection PyProtectedMember
14
14
  from apscheduler.schedulers.base import STATE_STOPPED, STATE_RUNNING
15
- from apscheduler.util import undefined, TIMEOUT_MAX
15
+ from apscheduler.util import undefined
16
+ from threading import TIMEOUT_MAX
16
17
  import deprecated
17
18
  from funboost.utils.redis_manager import RedisMixin
18
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 47.4
3
+ Version: 47.6
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -1,4 +1,4 @@
1
- funboost/__init__.py,sha256=zaCY0BA66lUKVni1XDcZj81i7JWJZts9HR1V2bvQEL8,3956
1
+ funboost/__init__.py,sha256=niUlwRc9tD7XdXOslJzOCtllHVzXblQwdqUSvB_znN8,3956
2
2
  funboost/__init__old.py,sha256=9Kv3cPLnPkbzMRnuJFVkPsuDdx1CdcSIuITkpdncZSc,20382
3
3
  funboost/__main__.py,sha256=-6Nogi666Y0LN8fVm3JmHGTOk8xEGWvotW_GDbSaZME,1065
4
4
  funboost/constant.py,sha256=STzRDZbuCC5FFV-uD_0r2beGsD1Zni4kregzR11z3Ok,8148
@@ -86,7 +86,7 @@ funboost/contrib/redis_consume_latest_msg_broker.py,sha256=ESortBZ2qu_4PBCa3e3Fe
86
86
  funboost/contrib/save_result_status_to_sqldb.py,sha256=AxvD7nHs4sjr9U0kwEZzyPKrsGdU_JzEgzzhh_V1_4w,4071
87
87
  funboost/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
88
  funboost/core/active_cousumer_info_getter.py,sha256=09fEc-BTEIRfDDfHmOvKnMjLjtOyp4edLsUlAXUR_Qs,4966
89
- funboost/core/booster.py,sha256=xxuDTCb3WrjTzEqfGSPMIz-JYtFIpKJPj9uscupCrgs,19038
89
+ funboost/core/booster.py,sha256=GNQLDutqiFH8ymQZgBUi0vhzlBm9VD97usLGlAzjnJY,20287
90
90
  funboost/core/current_task.py,sha256=Oils18_vAqGvV4pqM6yYwnhMaFn3nrpzo1PO48HHidQ,5799
91
91
  funboost/core/exceptions.py,sha256=pLF7BkRJAfDiWp2_xGZqencmwdPiSQI1NENbImExknY,1311
92
92
  funboost/core/fabric_deploy_helper.py,sha256=foieeqlNySuU9axJzNF6TavPjIUSYBx9UO3syVKUiyY,9999
@@ -97,7 +97,7 @@ funboost/core/function_result_status_config.py,sha256=PyjqAQOiwsLt28sRtH-eYRjiI3
97
97
  funboost/core/function_result_status_saver.py,sha256=yHKZF9MjmhI-Q4Mkrka7DdweJ0wpgfLmgfAlsfkCeCk,9274
98
98
  funboost/core/helper_funs.py,sha256=SsMa7A3iJyLek6v1qRK02kINebDp6kuAmlYkrYLXwQ0,2369
99
99
  funboost/core/kill_remote_task.py,sha256=MZ5vWLGt6SxyN76h5Lf_id9tyVUzjR-qXNyJwXaGlZY,8129
100
- funboost/core/lazy_impoter.py,sha256=A_zxal9vx6dU2MZlcwyzxi6yJrASCndFJFa6NyYmB1M,5100
100
+ funboost/core/lazy_impoter.py,sha256=yyJqwmbJziMfRTESn9magqso-_8ppl8yzHFCS5qzxkI,5104
101
101
  funboost/core/loggers.py,sha256=uy5mFLIUvKaVdJZLi6THyxqeuOmp9XEOKrH1Yci0zUM,2354
102
102
  funboost/core/msg_result_getter.py,sha256=6zRZaoobYRqII7sb8XcbVX7RCWiX5JAU0lXFtd_TiFc,8872
103
103
  funboost/core/muliti_process_enhance.py,sha256=tI3178inc5sqPh-jQc0XaTuUD1diIZyHuukBRk1Gp6Y,3595
@@ -129,7 +129,7 @@ funboost/function_result_web/static/js/jquery-1.11.0.min.js,sha256=ryQZ3RXgnqkTz
129
129
  funboost/function_result_web/templates/index.html,sha256=YM0582Q4t2da-xBf3Ga0McIfcsT9H98rjZck-irMkGo,20387
130
130
  funboost/function_result_web/templates/login.html,sha256=q37dj7O0LeyiV38Zd5P1Qn_qmhjdFomuYTRY1Yk48Bo,2007
131
131
  funboost/publishers/__init__.py,sha256=xqBHlvsJQVPfbdvP84G0LHmVB7-pFBS7vDnX1Uo9pVY,131
132
- funboost/publishers/base_publisher.py,sha256=WNKWxB8Cxp7sq06xlKIuYPhPQGf5de7KPG-GaxiOGZ0,17963
132
+ funboost/publishers/base_publisher.py,sha256=3KAdvkHidkM_qTmNhZlZ_e8a73rsdObZZ5ofNceKkg8,17998
133
133
  funboost/publishers/celery_publisher.py,sha256=uc9N1uLW74skUCw8dsnvxORM2O3cy4SiI7tUZRmvkHA,2336
134
134
  funboost/publishers/celery_publisher000.py,sha256=2XLOyU2__vlIUTi5L15uf0BJqAIjxbc3kCLIRDSOY9w,3966
135
135
  funboost/publishers/confluent_kafka_publisher.py,sha256=B4rF6gljixOMyN6L2eL1gzqTv97uoy7TTzgKUhHljEQ,4749
@@ -172,7 +172,7 @@ funboost/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  funboost/queues/memory_queues_map.py,sha256=e1S_cnjnCVI4DBsA_iupF51S_eX4OvCtlefQCqS1TYA,424
173
173
  funboost/queues/peewee_queue.py,sha256=FrwegrilkHZG6Y1cGdl5Bt_UtA25f7m5TJQJMZ9YnJI,5280
174
174
  funboost/queues/sqla_queue.py,sha256=b-2QPvvuMxklm41ibZhGKehaAV9trXBQFCOHzgThx_s,11080
175
- funboost/timing_job/__init__.py,sha256=jaXuyA1O5JnpIJfxzQijOPHP9sI92n8TSVZEr8iBTFM,10340
175
+ funboost/timing_job/__init__.py,sha256=UF13HdQZq27FxdoZ-9KHLUuI5kGAvcDgC9sS5QplmAo,10362
176
176
  funboost/timing_job/apscheduler_use_mysql_store.py,sha256=ss92DiSLzbWuVIo19sTLgC99GessltWLOlqqOd4AIL4,471
177
177
  funboost/timing_job/apscheduler_use_redis_store.py,sha256=RNZVerUTTzpSFMFEHWkDrUOSz71B4Ml_hlcavkL1tAA,2933
178
178
  funboost/utils/__init__.py,sha256=rAyXE7lgCo_3VdMvGrIJiqsTHv2nZPTJDTj1f6s_KgE,586
@@ -277,9 +277,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
277
277
  funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
278
278
  funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
279
279
  funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
280
- funboost-47.4.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
281
- funboost-47.4.dist-info/METADATA,sha256=Z-4fN5WtlKsvWL8eJj0eRrAvNu-n2oZderYdOzXU_3s,32849
282
- funboost-47.4.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
283
- funboost-47.4.dist-info/entry_points.txt,sha256=BQMqRALuw-QT9x2d7puWaUHriXfy3wIzvfzF61AnSSI,97
284
- funboost-47.4.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
285
- funboost-47.4.dist-info/RECORD,,
280
+ funboost-47.6.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
281
+ funboost-47.6.dist-info/METADATA,sha256=tZw71QHsf9xVUUgbNby8E1j4B8ACXLlJy5U8oJErZCY,32849
282
+ funboost-47.6.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
283
+ funboost-47.6.dist-info/entry_points.txt,sha256=BQMqRALuw-QT9x2d7puWaUHriXfy3wIzvfzF61AnSSI,97
284
+ funboost-47.6.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
285
+ funboost-47.6.dist-info/RECORD,,