funboost 45.4__py3-none-any.whl → 45.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__ = "45.4"
16
+ __version__ = "45.6"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -140,7 +140,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
140
140
  if consumer_params.consuming_function is None:
141
141
  raise ValueError('必须传 consuming_function 参数')
142
142
 
143
- self._msg_schedule_time_intercal = 0 if consumer_params.qps in (None,0) else 1.0 / consumer_params.qps
143
+ self._msg_schedule_time_intercal = 0 if consumer_params.qps in (None, 0) else 1.0 / consumer_params.qps
144
144
 
145
145
  self._concurrent_mode_dispatcher = ConcurrentModeDispatcher(self)
146
146
  if consumer_params.concurrent_mode == ConcurrentModeEnum.ASYNC:
@@ -233,6 +233,10 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
233
233
  self.logger.info(f'{self.queue_name} consumer 的消费者配置:\n {self.consumer_params.json_str_value()}')
234
234
  atexit.register(self.join_shedual_task_thread)
235
235
 
236
+ if self.consumer_params.auto_start_consuming_message:
237
+ self.publisher_of_same_queue
238
+ self.start_consuming_message()
239
+
236
240
  def _build_logger(self):
237
241
  logger_prefix = self.consumer_params.logger_prefix
238
242
  if logger_prefix != '':
@@ -585,10 +589,12 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
585
589
  # method_cls = getattr(sys.modules[self.consumer_params.consuming_function_class_module],
586
590
  # self.consumer_params.consuming_function_class_name)
587
591
  if self.publisher_params.consuming_function_kind == FunctionKind.CLASS_METHOD:
588
- method_cls = getattr(PathHelper(method_first_param_value[ConstStrForClassMethod.CLS_FILE]).import_as_module(), method_first_param_value[ConstStrForClassMethod.CLS_NAME])
592
+ method_cls = getattr(PathHelper.import_module(method_first_param_value[ConstStrForClassMethod.CLS_MODULE]),
593
+ method_first_param_value[ConstStrForClassMethod.CLS_NAME])
589
594
  real_function_only_params[method_first_param_name] = method_cls
590
595
  elif self.publisher_params.consuming_function_kind == FunctionKind.INSTANCE_METHOD:
591
- method_cls = getattr(PathHelper(method_first_param_value[ConstStrForClassMethod.CLS_FILE]).import_as_module(), method_first_param_value[ConstStrForClassMethod.CLS_NAME])
596
+ method_cls = getattr(PathHelper.import_module(method_first_param_value[ConstStrForClassMethod.CLS_MODULE]),
597
+ method_first_param_value[ConstStrForClassMethod.CLS_NAME])
592
598
  obj = method_cls(**method_first_param_value[ConstStrForClassMethod.OBJ_INIT_PARAMS])
593
599
  real_function_only_params[method_first_param_name] = obj
594
600
  # print(real_function_only_params)
@@ -5,7 +5,7 @@ import json
5
5
  from queue import Queue,SimpleQueue
6
6
  from funboost.constant import BrokerEnum
7
7
  from funboost.consumers.base_consumer import AbstractConsumer
8
- from funboost.publishers import local_python_queue_publisher
8
+ from funboost.queues.memory_queues_map import PythonQueues
9
9
 
10
10
 
11
11
  class LocalPythonQueueConsumer(AbstractConsumer):
@@ -15,7 +15,7 @@ class LocalPythonQueueConsumer(AbstractConsumer):
15
15
 
16
16
  @property
17
17
  def local_python_queue(self) -> Queue:
18
- return local_python_queue_publisher.local_pyhton_queue_name__local_pyhton_queue_obj_map[self._queue_name]
18
+ return PythonQueues.get_queue(self._queue_name)
19
19
 
20
20
  def _shedual_task(self):
21
21
  while True:
@@ -163,7 +163,7 @@ def get_current_taskid():
163
163
  # return fct.function_result_status.task_id
164
164
  try:
165
165
  fct = funboost_current_task()
166
- return fct.task_id # 不在funboost的消费函数里面就获取不到上下文了
166
+ return fct.task_id # 不在funboost的消费函数里面或者同个线程、协程就获取不到上下文了
167
167
  except (AttributeError, LookupError) as e:
168
168
  # print(e,type(e))
169
169
  return 'no_task_id'
@@ -177,6 +177,7 @@ class BoosterParams(BaseJsonAbleModel):
177
177
  do_not_run_by_specify_time: tuple = ('10:00:00', '22:00:00') # 不运行的时间段,在这个时间段自动不运行函数.
178
178
 
179
179
  schedule_tasks_on_main_thread: bool = False # 直接在主线程调度任务,意味着不能直接在当前主线程同时开启两个消费者。
180
+ auto_start_consuming_message: bool = False # 是否在定义后就自动启动消费,无需用户手动写 .consume() 来启动消息消费。
180
181
 
181
182
  consuming_function: typing.Callable = None # 消费函数,在@boost时候不用指定,因为装饰器知道下面的函数.
182
183
  consuming_function_raw: typing.Callable = None
@@ -195,8 +196,7 @@ class BoosterParams(BaseJsonAbleModel):
195
196
 
196
197
  auto_generate_info: dict = {} # 自动生成的信息,不需要用户主动传参.
197
198
 
198
- consuming_function_kind :typing.Optional[str]= None #自动生成的信息,不需要用户主动传参.
199
-
199
+ consuming_function_kind: typing.Optional[str] = None # 自动生成的信息,不需要用户主动传参,如果自动判断失误就传递。
200
200
 
201
201
  @root_validator(skip_on_failure=True)
202
202
  def check_values(cls, values: dict):
@@ -269,7 +269,6 @@ class PriorityConsumingControlConfig(BaseJsonAbleModel):
269
269
  misfire_grace_time: typing.Union[int, None] = None
270
270
  other_extra_params: dict = None # 其他参数, 例如消息优先级 , priority_control_config=PriorityConsumingControlConfig(other_extra_params={'priroty': priorityxx}),
271
271
 
272
-
273
272
  @root_validator(skip_on_failure=True)
274
273
  def cehck_values(cls, values: dict):
275
274
  if values['countdown'] and values['eta']:
@@ -297,7 +296,6 @@ class PublisherParams(BaseJsonAbleModel):
297
296
  consuming_function_kind: typing.Optional[str] = None # 自动生成的信息,不需要用户主动传参.
298
297
 
299
298
 
300
-
301
299
  if __name__ == '__main__':
302
300
  from funboost.concurrent_pool import FlexibleThreadPool
303
301
 
@@ -33,6 +33,7 @@ from funboost.core.serialization import Serialization
33
33
  from funboost.core.task_id_logger import TaskIdLogger
34
34
  from funboost.utils import decorators
35
35
  from funboost.funboost_config_deafult import BrokerConnConfig, FunboostCommonConfig
36
+ from nb_libs.path_helper import PathHelper
36
37
 
37
38
  RedisAsyncResult = AsyncResult # 别名
38
39
  RedisAioAsyncResult = AioAsyncResult # 别名
@@ -271,6 +272,7 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
271
272
  func_args_list[0] = {ConstStrForClassMethod.FIRST_PARAM_NAME: self.publish_params_checker.all_arg_name[0],
272
273
  ConstStrForClassMethod.CLS_NAME: cls.__name__,
273
274
  ConstStrForClassMethod.CLS_FILE: self.__get_cls_file(cls),
275
+ ConstStrForClassMethod.CLS_MODULE: PathHelper(self.__get_cls_file(cls)).get_module_name(),
274
276
  }
275
277
  elif self.publisher_params.consuming_function_kind == FunctionKind.INSTANCE_METHOD:
276
278
  obj = func_args[0]
@@ -280,6 +282,7 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
280
282
  func_args_list[0] = {ConstStrForClassMethod.FIRST_PARAM_NAME: self.publish_params_checker.all_arg_name[0],
281
283
  ConstStrForClassMethod.CLS_NAME: cls.__name__,
282
284
  ConstStrForClassMethod.CLS_FILE: self.__get_cls_file(cls),
285
+ ConstStrForClassMethod.CLS_MODULE: PathHelper(self.__get_cls_file(cls)).get_module_name(),
283
286
  ConstStrForClassMethod.OBJ_INIT_PARAMS: getattr(obj, ConstStrForClassMethod.OBJ_INIT_PARAMS),
284
287
 
285
288
  }
@@ -5,6 +5,7 @@ from collections import deque
5
5
  from queue import Queue, SimpleQueue
6
6
 
7
7
  from funboost.publishers.base_publisher import AbstractPublisher
8
+ from funboost.queues.memory_queues_map import PythonQueues
8
9
 
9
10
  local_pyhton_queue_name__local_pyhton_queue_obj_map = dict() # 使local queue和其他中间件完全一样的使用方式,使用映射保存队列的名字,使消费和发布通过队列名字能找到队列对象。
10
11
 
@@ -15,23 +16,23 @@ class LocalPythonQueuePublisher(AbstractPublisher):
15
16
  """
16
17
 
17
18
  # noinspection PyAttributeOutsideInit
18
- def custom_init(self):
19
- if self._queue_name not in local_pyhton_queue_name__local_pyhton_queue_obj_map:
20
- local_pyhton_queue_name__local_pyhton_queue_obj_map[self._queue_name] = Queue(1000000)
21
- self.queue = local_pyhton_queue_name__local_pyhton_queue_obj_map[self._queue_name]
19
+
20
+ @property
21
+ def local_python_queue(self) -> Queue:
22
+ return PythonQueues.get_queue(self._queue_name)
22
23
 
23
24
  def concrete_realization_of_publish(self, msg):
24
25
  # noinspection PyTypeChecker
25
26
  pass
26
- self.queue.put(msg)
27
+ self.local_python_queue.put(msg)
27
28
 
28
29
  def clear(self):
29
30
  # noinspection PyUnresolvedReferences
30
- self.queue.queue.clear()
31
+ self.local_python_queue.queue.clear()
31
32
  self.logger.warning(f'清除 本地队列中的消息成功')
32
33
 
33
34
  def get_message_count(self):
34
- return self.queue.qsize()
35
+ return self.local_python_queue.qsize()
35
36
 
36
37
  def close(self):
37
38
  pass
@@ -0,0 +1,11 @@
1
+ import queue
2
+
3
+
4
+ class PythonQueues:
5
+ local_pyhton_queue_name__local_pyhton_queue_obj_map = {}
6
+
7
+ @classmethod
8
+ def get_queue(cls,queue_name):
9
+ if queue_name not in cls.local_pyhton_queue_name__local_pyhton_queue_obj_map:
10
+ cls.local_pyhton_queue_name__local_pyhton_queue_obj_map[queue_name] = queue.Queue()
11
+ return cls.local_pyhton_queue_name__local_pyhton_queue_obj_map[queue_name]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 45.4
3
+ Version: 45.6
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -27,7 +27,7 @@ Classifier: Topic :: Software Development :: Libraries
27
27
  Description-Content-Type: text/markdown
28
28
  License-File: LICENSE
29
29
  Requires-Dist: nb-log (>=12.6)
30
- Requires-Dist: nb-libs (>=1.6)
30
+ Requires-Dist: nb-libs (>=1.8)
31
31
  Requires-Dist: nb-time (>=1.8)
32
32
  Requires-Dist: pymongo (==4.3.3)
33
33
  Requires-Dist: AMQPStorm (==2.10.6)
@@ -132,16 +132,25 @@ Requires-Dist: flask-login ; extra == 'flask'
132
132
 
133
133
 
134
134
  <pre style="color: greenyellow;background-color: #0c1119; font-size: medium;">
135
- pip install funboost ,python全功能分布式函数调度框架,。 用法例子见文档1.3
136
- 支持python所有类型的并发模式和全球一切知名消息队列中间件,
135
+ pip install funboost ,python全功能分布式函数调度框架。 demo用法例子见文档1.3
136
+
137
+ 只需要一行@boost代码即可分布式执行python一切任意函数,99%用过funboost的pythoner 感受是 方便 快速 强大。
138
+ 支持python所有类型的并发模式,消息队列方面支持全球一切知名消息队列中间件和模拟的实现消息队列,
137
139
  同时funboost支持celery整个框架作为核心来发布和消费消息,使用funboost的极简api方式来自动化配置和利用celery调度,
138
140
  也支持huey dramatiq rq等任务队列框架作为funboost的broker。
141
+
139
142
  python函数加速器,框架包罗万象,一统编程思维,兼容50% python编程业务场景,适用范围广。
140
- 只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 方便 快速 强大。
141
143
  python万能分布式函数调度框架,支持5种并发模式,30+种消息队列中间件(或任务队列框架),
142
144
  30种任务控制功能。给任意python函数赋能。
143
145
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
146
+
144
147
  框架只需要学习@boost这一个装饰器的入参就可以,所有用法几乎和1.3例子一摸一样,非常简化简单。
148
+ 框架对代码没有入侵,可以加到任意已有项目而对项目python文件目录结构0要求,
149
+ 不像 celery django scrapy 这样的框架,要从一开始就开始规划好项目目录结构,如果不想用框架了,
150
+ 或者想改变使用其他框架框架,那么已经所写的代码组织形式就几乎成了废物,需要大改特改.
151
+ 但是funboost完全不会这样,加上或去掉@boost装饰器,对你的项目影响为0,用户照常使用,
152
+ 所以用户可以对任意项目,任意时候,引入使用funboost或者去掉使用funboost,代码组织形式不需要发生变化.
153
+
145
154
  </pre>
146
155
 
147
156
  ### 框架评价
@@ -158,6 +167,7 @@ python万能分布式函数调度框架,支持5种并发模式,30+种消息
158
167
  ,连celery命令行运行起来都要反复猜测尝试。
159
168
  正因为如此用户从心理已近十分惧怕学习一种叫python框架的东西了,用户顶多愿意学习一个python包或者模块,
160
169
  学习一个框架会非常害怕觉得难度高且耗时,所以非常反感尝试新的框架。
170
+ 用过的99%都说funboost比celery简单方便太多,看都不看的人第一秒就是开始质疑重复造轮子.
161
171
 
162
172
  funboost只有一个@boost装饰器,@boost入参能自动补全,更重要的是被@boost装饰的函数,
163
173
  有哪些方法,每个方法入参是什么都能自动补全。funboost的中间件配置文件自当生成在用户当前项目根目录,
@@ -296,10 +306,10 @@ if __name__ == '__main__':
296
306
  2)funboost 使用内存队列,设置10线程并发
297
307
  ```python
298
308
  import time
299
- from funboost import boost, BrokerEnum
309
+ from funboost import BoosterParams, BrokerEnum
300
310
 
301
311
 
302
- @boost("test_insteda_thread_queue", broker_kind=BrokerEnum.MEMORY_QUEUE, concurrent_num=10)
312
+ @BoosterParams(queue_name="test_insteda_thread_queue", broker_kind=BrokerEnum.MEMORY_QUEUE, concurrent_num=10, auto_start_consuming_message=True)
303
313
  def f(x):
304
314
  time.sleep(3)
305
315
  print(x)
@@ -308,7 +318,8 @@ def f(x):
308
318
  if __name__ == '__main__':
309
319
  for i in range(100):
310
320
  f.push(i)
311
- f.consume()
321
+
322
+
312
323
  ```
313
324
 
314
325
 
@@ -563,7 +574,7 @@ python比其他语言更需要分布式函数调度框架来执行函数,有
563
574
  funboost通过支持celery作为broker_kind,使celer框架变成了funboost的一个子集
564
575
  ```
565
576
 
566
- [查看分布式函数调度框架完整文档](https://funboost.readthedocs.io/zh-cn/latest/index.html)
577
+ [查看分布式函数调度框架完整文档](https://funboost.readthedocs.io/)
567
578
 
568
579
 
569
580
 
@@ -1,4 +1,4 @@
1
- funboost/__init__.py,sha256=yWOlKCPbh9FzUmOWdmpZJ3G5kAs_eF3ZqbntyEezdAg,3956
1
+ funboost/__init__.py,sha256=Gj0PweyuIxvJ8aa7Ai5WF0eFUdP06133pA_MQ7VLY5M,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
@@ -35,7 +35,7 @@ funboost/concurrent_pool/backup/async_pool_executor0223.py,sha256=RVUZiylUvpTm6U
35
35
  funboost/concurrent_pool/backup/async_pool_executor_back.py,sha256=KL6zEQaa1KkZOlAO85mCC1gwLm-YC5Ghn21IUom0UKM,9598
36
36
  funboost/concurrent_pool/backup/async_pool_executor_janus.py,sha256=OHMWJ9l3EYTpPpcrPrGGKd4K0tmQ2PN8HiX0Dta0EOo,5728
37
37
  funboost/consumers/__init__.py,sha256=ZXY_6Kut1VYNQiF5aWEgIWobsW1ht9YUP0TdRZRWFqI,126
38
- funboost/consumers/base_consumer.py,sha256=1pYBXiNUUZDCAjp5vzKkQSyauN4WTAMlRb75EMHxQeE,80120
38
+ funboost/consumers/base_consumer.py,sha256=prs8RnEHpNC_xh-3Uan3Xhcr4zyYqgFOl-5N4W8SHG8,80342
39
39
  funboost/consumers/celery_consumer.py,sha256=9gtz7nlZkmv3ErmaseT0_Q__ltSPx-fOcwi-TMPoaLA,9220
40
40
  funboost/consumers/confirm_mixin.py,sha256=NPOhxYF0nmJR5J03nXD6ndLo33eAUI60PXvk3WFyoz0,6126
41
41
  funboost/consumers/dramatiq_consumer.py,sha256=ozmeAfeF0U-YNYHK4suQB0N264h5AZdfMH0O45Mh-8A,2229
@@ -48,7 +48,7 @@ funboost/consumers/huey_consumer.py,sha256=cW10ZPxdZQzUuJwdqQpJIRPTj2vCbZS0uXFJ7
48
48
  funboost/consumers/kafka_consumer.py,sha256=OAq6fclhDBufsWTowAikGBYjptc28SIE-EDzFEz9J-I,4324
49
49
  funboost/consumers/kafka_consumer_manually_commit.py,sha256=kkHyTf4EQFEEoyiZ-pZQBR-g3M1rkFYnfKFXoeODCIE,9620
50
50
  funboost/consumers/kombu_consumer.py,sha256=hj2J-1r5hBbcTNXIpU6qe1MwYPD-8gEKlDTSRV3B5Js,10208
51
- funboost/consumers/local_python_queue_consumer.py,sha256=HyUFZXY6phF6eaL1qd5z7Kof3LZ0J6EO0zllBS-skqA,1220
51
+ funboost/consumers/local_python_queue_consumer.py,sha256=4Cel1WaNwbRpDux22USP8is5R9__A_-LlqyHjcw02Z4,1160
52
52
  funboost/consumers/memory_deque_consumer.py,sha256=tTwOkrB9GdySOQstVLnU4hnBnap6rafCeoXhmV0TI5c,1110
53
53
  funboost/consumers/mongomq_consumer.py,sha256=e1Cupe-Cb2LUuJlQhER6NecrvK7FyzKKZ2HxyfOI-OY,1119
54
54
  funboost/consumers/mqtt_consumer.py,sha256=iLWKxe0CjKHUYrE6YMWNJHto0tD3siUAvZl9ssNsz_s,2297
@@ -87,12 +87,12 @@ funboost/contrib/save_result_status_to_sqldb.py,sha256=AxvD7nHs4sjr9U0kwEZzyPKrs
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
89
  funboost/core/booster.py,sha256=vztzE7KqfXsg_LODmW5cX1M8as6n2tPdqEjkOLa7SYM,18276
90
- funboost/core/current_task.py,sha256=cJw5ZDtsTJB_5LHN18F1XUFaT-YnAX60AOAi_CkvQoE,5772
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
93
93
  funboost/core/funboost_config_getter.py,sha256=TDccp5pQamkoJXkwyPwGsQGDJY8ej8ZT8L8RESSAD2w,382
94
94
  funboost/core/funboost_time.py,sha256=IbB4dFCpg3oGUe90ssAJ_x0eDPtAVfvsUr4esdoKaOk,1777
95
- funboost/core/func_params_model.py,sha256=CMePcxL8vNSWHAEVvQImJF5h7Qv-gIvieh6ejPYgjEU,20593
95
+ funboost/core/func_params_model.py,sha256=5cFPTPZxtnp9wOx7aie4fjEQv4u63tS7M8-UrokBupE,20776
96
96
  funboost/core/function_result_status_config.py,sha256=PyjqAQOiwsLt28sRtH-eYRjiI3edPFO4Nde0ILFRReE,1764
97
97
  funboost/core/function_result_status_saver.py,sha256=yHKZF9MjmhI-Q4Mkrka7DdweJ0wpgfLmgfAlsfkCeCk,9274
98
98
  funboost/core/helper_funs.py,sha256=Jzy6t4-cugI-tOztgt7DGSos3tkxk2R4IOUOK2OWJ-I,2365
@@ -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=mkrXf6eUqVyYOtFmkE5Op1j1z2c-RP-BFqOkyEsQiWI,17424
132
+ funboost/publishers/base_publisher.py,sha256=K6ztxeCWCDakEFUXEtA-lmmcccY8fLEKFlOLIVzjz58,17718
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
@@ -141,7 +141,7 @@ funboost/publishers/httpsqs_publisher.py,sha256=PS6h8-mn3wYFfMOsPt4tal8p0yZgYgrY
141
141
  funboost/publishers/huey_publisher.py,sha256=9HBrsqTO61iPB1nI5fYOQNPuOaX4I4Wmb1BRNODAE_0,1118
142
142
  funboost/publishers/kafka_publisher.py,sha256=5qOkNl1SFh4TQaVg0hJSF2ms7T76bkpF6ZtjjLaW8Vg,2060
143
143
  funboost/publishers/kombu_publisher.py,sha256=Z0JKF_-xKJSTc21jqhIwphDUHUPO2X3wVojt-rHhDlM,5415
144
- funboost/publishers/local_python_queue_publisher.py,sha256=SJFyQ_4fk1oEBVmtNqTPTsmMgkhnMbf5SA4v7RDE6Do,3569
144
+ funboost/publishers/local_python_queue_publisher.py,sha256=292NKW7X4MCMMPvfMDb-6_BdA997lda7-lOlODIAaOY,3477
145
145
  funboost/publishers/meomory_deque_publisher.py,sha256=0q6WKQ8ohnhlXDgXkxWGsImZCnwB12nFD6kUjldRQiw,1303
146
146
  funboost/publishers/mongomq_publisher.py,sha256=xQr3KMQEKksX4OEvzPlCl8v1VeBHaoZtYw2QujOUyGo,1874
147
147
  funboost/publishers/mqtt_publisher.py,sha256=nL-pweqL8lkoRUliNKQtdXgryG0wZO7iIvjFdr1it1s,3131
@@ -169,6 +169,7 @@ funboost/publishers/txt_file_publisher.py,sha256=dqrfBt1ejjwJbwFS3UqPo4VFDCa6NWb
169
169
  funboost/publishers/udp_publisher.py,sha256=TOiKrhmCMjx4teqIgdUwRic0lxyK2cupinafsz--wzY,1194
170
170
  funboost/publishers/zeromq_publisher.py,sha256=SHFzSLPLkoht9Ey-q894g59sCuu6IM603xDV0JD4CrY,1024
171
171
  funboost/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
+ funboost/queues/memory_queues_map.py,sha256=e1S_cnjnCVI4DBsA_iupF51S_eX4OvCtlefQCqS1TYA,424
172
173
  funboost/queues/peewee_queue.py,sha256=FrwegrilkHZG6Y1cGdl5Bt_UtA25f7m5TJQJMZ9YnJI,5280
173
174
  funboost/queues/sqla_queue.py,sha256=b-2QPvvuMxklm41ibZhGKehaAV9trXBQFCOHzgThx_s,11080
174
175
  funboost/timing_job/__init__.py,sha256=uMKIiZOqr8aXGPxZhDcVVeeNTsDi-S7kOkLc1nHaLQw,9099
@@ -276,9 +277,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
276
277
  funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
277
278
  funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
278
279
  funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
279
- funboost-45.4.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
280
- funboost-45.4.dist-info/METADATA,sha256=OPw8J2SBtwnQV7VgLemWmfR2Xjo_aVyJ7abR8mihV1w,31729
281
- funboost-45.4.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
282
- funboost-45.4.dist-info/entry_points.txt,sha256=BQMqRALuw-QT9x2d7puWaUHriXfy3wIzvfzF61AnSSI,97
283
- funboost-45.4.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
284
- funboost-45.4.dist-info/RECORD,,
280
+ funboost-45.6.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
281
+ funboost-45.6.dist-info/METADATA,sha256=d2uFQ75R_EbBoYH8UHkCQaFNVKkAXqS8Brg9PvXRhMg,32533
282
+ funboost-45.6.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
283
+ funboost-45.6.dist-info/entry_points.txt,sha256=BQMqRALuw-QT9x2d7puWaUHriXfy3wIzvfzF61AnSSI,97
284
+ funboost-45.6.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
285
+ funboost-45.6.dist-info/RECORD,,