funboost 49.7__py3-none-any.whl → 49.8__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.7"
16
+ __version__ = "49.8"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -6,6 +6,7 @@ import threading
6
6
  import time
7
7
  import traceback
8
8
  from threading import Thread
9
+ import traceback
9
10
 
10
11
  from funboost.concurrent_pool.base_pool_type import FunboostBaseConcurrentPool
11
12
  from funboost.core.loggers import FunboostFileLoggerMixin
@@ -53,14 +54,17 @@ class AsyncPoolExecutor(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
53
54
  使api和线程池一样,最好的性能做法是submit也弄成 async def,生产和消费在同一个线程同一个loop一起运行,但会对调用链路的兼容性产生破坏,从而调用方式不兼容线程池。
54
55
  """
55
56
 
56
- def __init__(self, size, loop=None):
57
+ def __init__(self, size, specify_async_loop=None,
58
+ is_auto_start_specify_async_loop_in_child_thread=True):
57
59
  """
58
60
 
59
61
  :param size: 同时并发运行的协程任务数量。
60
- :param loop:
62
+ :param specify_loop: 可以指定loop,异步三方包的连接池发请求不能使用不同的loop去使用连接池.
61
63
  """
62
64
  self._size = size
63
- self.loop = loop or asyncio.new_event_loop()
65
+ self._specify_async_loop = specify_async_loop
66
+ self._is_auto_start_specify_async_loop_in_child_thread = is_auto_start_specify_async_loop_in_child_thread
67
+ self.loop = specify_async_loop or asyncio.new_event_loop()
64
68
  asyncio.set_event_loop(self.loop)
65
69
  self._diff_init()
66
70
  # self._lock = threading.Lock()
@@ -120,11 +124,16 @@ class AsyncPoolExecutor(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
120
124
  # self.loop.run_until_complete(asyncio.wait([self._consume() for _ in range(self._size)], loop=self.loop))
121
125
  # self._can_be_closed_flag = True
122
126
  [self.loop.create_task(self._consume()) for _ in range(self._size)]
123
- try:
127
+ if self._specify_async_loop is None:
124
128
  self.loop.run_forever()
125
- except Exception as e:
126
- self.logger.warning(f'{e}') # 如果多个线程使用一个loop,不能重复启动loop,否则会报错。
127
-
129
+ else:
130
+ if self._is_auto_start_specify_async_loop_in_child_thread:
131
+ try:
132
+ self.loop.run_forever() #如果是指定的loop不能多次启动一个loop.
133
+ except Exception as e:
134
+ self.logger.warning(f'{e} {traceback.format_exc()}') # 如果多个线程使用一个loop,不能重复启动loop,否则会报错。
135
+ else:
136
+ pass # 用户需要自己在自己的业务代码中去手动启动loop.run_forever()
128
137
 
129
138
 
130
139
  # def shutdown(self):
@@ -139,14 +148,6 @@ class AsyncPoolExecutor(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
139
148
 
140
149
 
141
150
 
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
151
  if __name__ == '__main__':
151
152
  def test_async_pool_executor():
152
153
  from funboost.concurrent_pool import CustomThreadPoolExecutor as ThreadPoolExecutor
@@ -1126,7 +1126,9 @@ class ConcurrentModeDispatcher(FunboostFileLoggerMixin):
1126
1126
  # pool_type = ProcessPoolExecutor
1127
1127
  if self._concurrent_mode == ConcurrentModeEnum.ASYNC:
1128
1128
  self.consumer._concurrent_pool = self.consumer.consumer_params.specify_concurrent_pool or pool_type(
1129
- self.consumer.consumer_params.concurrent_num, loop=self.consumer.consumer_params.specify_async_loop)
1129
+ self.consumer.consumer_params.concurrent_num,
1130
+ specify_async_loop=self.consumer.consumer_params.specify_async_loop,
1131
+ is_auto_start_specify_async_loop_in_child_thread=self.consumer.consumer_params.is_auto_start_specify_async_loop_in_child_thread)
1130
1132
  else:
1131
1133
  # print(pool_type)
1132
1134
  self.consumer._concurrent_pool = self.consumer.consumer_params.specify_concurrent_pool or pool_type(self.consumer.consumer_params.concurrent_num)
@@ -134,7 +134,9 @@ class BoosterParams(BaseJsonAbleModel):
134
134
  concurrent_mode: str = ConcurrentModeEnum.THREADING # 并发模式,支持THREADING,GEVENT,EVENTLET,ASYNC,SINGLE_THREAD并发,multi_process_consume 支持协程/线程 叠加多进程并发,性能炸裂.
135
135
  concurrent_num: int = 50 # 并发数量,并发种类由concurrent_mode决定
136
136
  specify_concurrent_pool: typing.Optional[FunboostBaseConcurrentPool] = None # 使用指定的线程池/携程池,可以多个消费者共使用一个线程池,节约线程.不为None时候。threads_num失效
137
+
137
138
  specify_async_loop: typing.Optional[asyncio.AbstractEventLoop] = None # 指定的async的loop循环,设置并发模式为async才能起作用。 有些包例如aiohttp,发送请求和httpclient的实例化不能处在两个不同的loop中,可以传过来.
139
+ is_auto_start_specify_async_loop_in_child_thread: bool = True # 是否在子线程中自动启动指定的async的loop循环,设置并发模式为async才能起作用。如果是False,用户自己在自己的代码中去手动启动自己的loop.run_forever()
138
140
 
139
141
  """qps:
140
142
  强悍的控制功能,指定1秒内的函数执行次数,例如可以是小数0.01代表每100秒执行一次,也可以是50代表1秒执行50次.为None则不控频。 设置qps时候,不需要指定并发数量,funboost的能够自适应智能动态调节并发池大小."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 49.7
3
+ Version: 49.8
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
@@ -1,4 +1,4 @@
1
- funboost/__init__.py,sha256=qpFIqXlbyo5r8P8ZdLNCLmqt0hV3NoqceFH59nYlrYE,4093
1
+ funboost/__init__.py,sha256=R5fQH2M-EnQpMPXfnQolt3oTux_htOCooyjiI1R5jXo,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=fRrg9gJKssU9s7t-Sn-yZxoPyNMF2z8tON-6ZLS6Ww4,13465
@@ -16,7 +16,7 @@ funboost/assist/taskiq_helper.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPja
16
16
  funboost/beggar_version_implementation/beggar_redis_consumer.py,sha256=vXb1c2B-edcENqxU41CEYz0T8zdUcaGu9wBhDc4KPok,4037
17
17
  funboost/concurrent_pool/__init__.py,sha256=C27xYXj7c1NGuVeG7K2LxKH7JKnGwfPfITyon6xFaoE,803
18
18
  funboost/concurrent_pool/async_helper.py,sha256=Q2EVZeS_A29-S6i9VszC6HNNW-RkICF8v3t_9GJMwFw,3942
19
- funboost/concurrent_pool/async_pool_executor.py,sha256=328ukGPtVg9fVQ1qc1XCCqnLaPVZFQNUExx91dwiqIk,6742
19
+ funboost/concurrent_pool/async_pool_executor.py,sha256=WIaLUQgR0C25i9PTmGdyFx7rCLTOP4pWvVsRFNC9XfM,7522
20
20
  funboost/concurrent_pool/base_pool_type.py,sha256=h3xcadufMAf49CoNe5VkUyIxlniMeNtDjadqB5IsiKA,194
21
21
  funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py,sha256=pWqpKAP0Z0cuHdSHJ5ti6EpNndnIoYkPE6IOl4BvbJw,4775
22
22
  funboost/concurrent_pool/bounded_processpoolexcutor_py36.py,sha256=CMRSjwnUAhNT2fj44SVNEYRehprlxjQADYkgw9hTVlw,3063
@@ -36,7 +36,7 @@ funboost/concurrent_pool/backup/async_pool_executor_back.py,sha256=x0pyPgxzTENOs
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=FPgKlbS0SN6TRE9IGgePkjeQj7XroD-0j8UsEMqi8_w,88186
39
+ funboost/consumers/base_consumer.py,sha256=XFcNax2wuQ3ZsOHGYxX6WfgDqiTrnjjf9IlNUhjD8fk,88367
40
40
  funboost/consumers/celery_consumer.py,sha256=6BPZa2O36BQFVu7uWuuFCfJTTaw-36DJJPSpvEbamU8,9371
41
41
  funboost/consumers/confirm_mixin.py,sha256=5xC9AAQr_MY4tbSed8U-M6tOVmh69Qv9X0ld0JLT9Tk,6185
42
42
  funboost/consumers/dramatiq_consumer.py,sha256=ozmeAfeF0U-YNYHK4suQB0N264h5AZdfMH0O45Mh-8A,2229
@@ -93,7 +93,7 @@ funboost/core/exceptions.py,sha256=COaJywy5U6grZI6_nn2ZdK8YWFe7Ml95X7qIZKk7jIc,1
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=IVujnyMCy_7DHpmRyD3RGNf0cY_aMS1sHBAh0MyoHHw,24354
96
+ funboost/core/func_params_model.py,sha256=8OAzeseB1y9Il5xe6BRxqLxVgVIPkz07lsumHbwENBI,24629
97
97
  funboost/core/function_result_status_config.py,sha256=PyjqAQOiwsLt28sRtH-eYRjiI3edPFO4Nde0ILFRReE,1764
98
98
  funboost/core/function_result_status_saver.py,sha256=PtaSgxPdsmv1fhmVgZ75RG5rJwE3d7SSWhcVVim-EsM,9865
99
99
  funboost/core/helper_funs.py,sha256=SsMa7A3iJyLek6v1qRK02kINebDp6kuAmlYkrYLXwQ0,2369
@@ -329,9 +329,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
329
329
  funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
330
330
  funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
331
331
  funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
332
- funboost-49.7.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
333
- funboost-49.7.dist-info/METADATA,sha256=R2fDWn1cNMBVHZkWkDBR777H90NiaAcX0Ria7ohVU4s,42599
334
- funboost-49.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
335
- funboost-49.7.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
336
- funboost-49.7.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
337
- funboost-49.7.dist-info/RECORD,,
332
+ funboost-49.8.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
333
+ funboost-49.8.dist-info/METADATA,sha256=Ivm-JKglnPONj5zwwpNfO0H6KIR8CMMhnCCQJJmbCKE,42599
334
+ funboost-49.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
335
+ funboost-49.8.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
336
+ funboost-49.8.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
337
+ funboost-49.8.dist-info/RECORD,,