funboost 43.0__py3-none-any.whl → 43.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 +1 -1
- funboost/constant.py +1 -0
- funboost/consumers/base_consumer.py +2 -1
- funboost/core/cli/discovery_boosters.py +5 -3
- funboost/core/current_task.py +7 -6
- funboost/core/func_params_model.py +2 -0
- funboost/core/lazy_impoter.py +3 -2
- funboost/core/muliti_process_enhance.py +3 -3
- funboost/core/task_id_logger.py +7 -1
- funboost/funboost_config_deafult.py +2 -2
- funboost/publishers/base_publisher.py +10 -10
- funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
- funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +3 -3
- {funboost-43.0.dist-info → funboost-43.1.dist-info}/METADATA +1 -1
- {funboost-43.0.dist-info → funboost-43.1.dist-info}/RECORD +19 -19
- {funboost-43.0.dist-info → funboost-43.1.dist-info}/LICENSE +0 -0
- {funboost-43.0.dist-info → funboost-43.1.dist-info}/WHEEL +0 -0
- {funboost-43.0.dist-info → funboost-43.1.dist-info}/entry_points.txt +0 -0
- {funboost-43.0.dist-info → funboost-43.1.dist-info}/top_level.txt +0 -0
funboost/__init__.py
CHANGED
funboost/constant.py
CHANGED
|
@@ -219,6 +219,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
219
219
|
logger_prefix=consumer_params.logger_prefix,
|
|
220
220
|
create_logger_file=consumer_params.create_logger_file,
|
|
221
221
|
log_filename=consumer_params.log_filename,
|
|
222
|
+
logger_name=consumer_params.logger_name,
|
|
222
223
|
broker_exclusive_config=self.consumer_params.broker_exclusive_config)
|
|
223
224
|
if is_main_process:
|
|
224
225
|
self.logger.info(f'{self.queue_name} consumer 的消费者配置:\n {self.consumer_params.json_str_value()}')
|
|
@@ -229,7 +230,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
229
230
|
if logger_prefix != '':
|
|
230
231
|
logger_prefix += '--'
|
|
231
232
|
# logger_name = f'{logger_prefix}{self.__class__.__name__}--{concurrent_name}--{queue_name}--{self.consuming_function.__name__}'
|
|
232
|
-
logger_name = f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
233
|
+
logger_name = self.consumer_params.logger_name or f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
233
234
|
self.logger_name = logger_name
|
|
234
235
|
log_filename = self.consumer_params.log_filename or f'funboost.{self.queue_name}.log'
|
|
235
236
|
self.logger = LogManager(logger_name, logger_cls=TaskIdLogger).get_logger_and_add_handlers(
|
|
@@ -7,7 +7,7 @@ import importlib.util
|
|
|
7
7
|
# import nb_log
|
|
8
8
|
from funboost.core.loggers import FunboostFileLoggerMixin
|
|
9
9
|
from funboost.utils.decorators import flyweight
|
|
10
|
-
from funboost.core.lazy_impoter import
|
|
10
|
+
from funboost.core.lazy_impoter import lazy_impoter
|
|
11
11
|
|
|
12
12
|
@flyweight
|
|
13
13
|
class BoosterDiscovery(FunboostFileLoggerMixin):
|
|
@@ -63,10 +63,12 @@ class BoosterDiscovery(FunboostFileLoggerMixin):
|
|
|
63
63
|
if Path(file_path) == Path(sys._getframe(1).f_code.co_filename):
|
|
64
64
|
self.logger.warning(f'排除导入调用auto_discovery的模块自身 {file_path}') # 否则下面的import这个文件,会造成无限懵逼死循环
|
|
65
65
|
continue
|
|
66
|
-
|
|
66
|
+
|
|
67
|
+
module_name = Path(file_path).as_posix().replace('/', '.') + '.' + Path(file_path).stem
|
|
68
|
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
|
67
69
|
module = importlib.util.module_from_spec(spec)
|
|
68
70
|
spec.loader.exec_module(module)
|
|
69
|
-
|
|
71
|
+
lazy_impoter.BoostersManager.show_all_boosters()
|
|
70
72
|
|
|
71
73
|
|
|
72
74
|
if __name__ == '__main__':
|
funboost/core/current_task.py
CHANGED
|
@@ -47,7 +47,7 @@ if __name__ == '__main__':
|
|
|
47
47
|
"""
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
class
|
|
50
|
+
class __ThreadCurrentTask:
|
|
51
51
|
"""
|
|
52
52
|
用于在用户自己函数内部去获取 消息的完整体,当前重试次数等.
|
|
53
53
|
"""
|
|
@@ -92,7 +92,7 @@ class ThreadCurrentTask:
|
|
|
92
92
|
def logger(self, logger: logging.Logger):
|
|
93
93
|
self._fct_local_data.logger = logger
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
thread_current_task = __ThreadCurrentTask()
|
|
96
96
|
def is_asyncio_environment():
|
|
97
97
|
try:
|
|
98
98
|
loop = asyncio.get_running_loop()
|
|
@@ -101,7 +101,7 @@ def is_asyncio_environment():
|
|
|
101
101
|
return False
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
class
|
|
104
|
+
class __AsyncioCurrentTask:
|
|
105
105
|
_function_params = contextvars.ContextVar("function_params")
|
|
106
106
|
_full_msg = contextvars.ContextVar("full_msg")
|
|
107
107
|
_function_result_status = contextvars.ContextVar("function_result_status")
|
|
@@ -143,9 +143,10 @@ class AsyncioCurrentTask:
|
|
|
143
143
|
def logger(self, logger: logging.Logger):
|
|
144
144
|
self._logger.set(logger)
|
|
145
145
|
|
|
146
|
+
asyncio_current_task = __AsyncioCurrentTask()
|
|
146
147
|
|
|
147
148
|
def funboost_current_task():
|
|
148
|
-
return
|
|
149
|
+
return asyncio_current_task if is_asyncio_environment() else thread_current_task
|
|
149
150
|
|
|
150
151
|
|
|
151
152
|
def get_current_taskid():
|
|
@@ -153,7 +154,7 @@ def get_current_taskid():
|
|
|
153
154
|
# return fct.function_result_status.task_id
|
|
154
155
|
try:
|
|
155
156
|
return fct.task_id # 不在funboost的消费函数里面就获取不到上下文了
|
|
156
|
-
except AttributeError as e:
|
|
157
|
+
except (AttributeError,LookupError) as e:
|
|
157
158
|
# print(e,type(e))
|
|
158
159
|
return 'no_task_id'
|
|
159
160
|
|
|
@@ -162,5 +163,5 @@ if __name__ == '__main__':
|
|
|
162
163
|
print()
|
|
163
164
|
for i in range(100000):
|
|
164
165
|
funboost_current_task()
|
|
165
|
-
|
|
166
|
+
get_current_taskid()
|
|
166
167
|
print()
|
|
@@ -143,6 +143,7 @@ class BoosterParams(BaseJsonAbleModel):
|
|
|
143
143
|
log_level: int = logging.DEBUG # 消费者和发布者的日志级别,建议设置DEBUG级别,不然无法知道正在运行什么消息
|
|
144
144
|
logger_prefix: str = '' # 日志名字前缀,可以设置前缀
|
|
145
145
|
create_logger_file: bool = True # 发布者和消费者是否创建文件文件日志,为False则只打印控制台不写文件.
|
|
146
|
+
logger_name: str = '' # 队列消费者发布者的日志命名空间.
|
|
146
147
|
log_filename: typing.Union[str, None] = None # 消费者发布者的文件日志名字.如果为None,则自动使用 funboost.队列 名字作为文件日志名字. 日志文件夹是在nb_log_config.py的 LOG_PATH中决定的.
|
|
147
148
|
is_show_message_get_from_broker: bool = False # 运行时候,是否记录从消息队列获取出来的消息内容
|
|
148
149
|
is_print_detail_exception: bool = True # 消费函数出错时候,是否打印详细的报错堆栈,为False则只打印简略的报错信息不包含堆栈.
|
|
@@ -248,6 +249,7 @@ class PublisherParams(BaseJsonAbleModel):
|
|
|
248
249
|
log_level: int = logging.DEBUG
|
|
249
250
|
logger_prefix: str = ''
|
|
250
251
|
create_logger_file: bool = True
|
|
252
|
+
logger_name: str = '' # 队列消费者发布者的日志命名空间.
|
|
251
253
|
log_filename: typing.Optional[str] = None
|
|
252
254
|
clear_queue_within_init: bool = False # with 语法发布时候,先清空消息队列
|
|
253
255
|
consuming_function: typing.Callable = None # consuming_function 作用是 inspect 模块获取函数的入参信息
|
funboost/core/lazy_impoter.py
CHANGED
|
@@ -18,8 +18,9 @@ class LazyImpoter:
|
|
|
18
18
|
# from funboost.core.current_task import get_current_taskid
|
|
19
19
|
# return get_current_taskid
|
|
20
20
|
|
|
21
|
+
lazy_impoter = LazyImpoter()
|
|
21
22
|
|
|
22
23
|
if __name__ == '__main__':
|
|
23
24
|
for i in range(10000):
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
lazy_impoter.BoostersManager
|
|
26
|
+
lazy_impoter.BoostersManager
|
|
@@ -7,11 +7,11 @@ from concurrent.futures import ProcessPoolExecutor
|
|
|
7
7
|
from funboost.core.booster import Booster
|
|
8
8
|
from funboost.core.helper_funs import run_forever
|
|
9
9
|
from funboost.core.loggers import flogger
|
|
10
|
-
from funboost.core.lazy_impoter import
|
|
10
|
+
from funboost.core.lazy_impoter import lazy_impoter
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _run_consumer_in_new_process(queue_name, ):
|
|
14
|
-
booster_current_pid =
|
|
14
|
+
booster_current_pid = lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name)
|
|
15
15
|
# booster_current_pid = boost(**boost_params)(consuming_function)
|
|
16
16
|
booster_current_pid.consume()
|
|
17
17
|
# ConsumersManager.join_all_consumer_shedual_task_thread()
|
|
@@ -49,7 +49,7 @@ def run_consumer_with_multi_process(booster: Booster, process_num=1):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
def _multi_process_pub_params_list_in_new_process(queue_name, msgs: List[dict]):
|
|
52
|
-
booster_current_pid =
|
|
52
|
+
booster_current_pid = lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name)
|
|
53
53
|
publisher = booster_current_pid.publisher
|
|
54
54
|
publisher.set_log_level(20) # 超高速发布,如果打印详细debug日志会卡死屏幕和严重降低代码速度。
|
|
55
55
|
for msg in msgs:
|
funboost/core/task_id_logger.py
CHANGED
|
@@ -5,9 +5,15 @@ from funboost.core.current_task import get_current_taskid
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class TaskIdLogger(CompatibleLogger):
|
|
8
|
+
"""
|
|
9
|
+
如果你要使用带taskid的日志模板,一定要使用
|
|
10
|
+
LogManager('namexx',logger_cls=TaskIdLogger).get_logger_and_add_handlers(....)
|
|
11
|
+
的方式来创建logger, 就是需要指定logger_cls=TaskIdLogger ,否则的话你需要在打印日志时候 手动传递extra logger.info(msg,extra={'task_id':task_idxxx})
|
|
12
|
+
"""
|
|
8
13
|
def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False):
|
|
9
14
|
extra = extra or {}
|
|
10
15
|
if 'task_id' not in extra:
|
|
11
16
|
extra['task_id'] = get_current_taskid()
|
|
12
|
-
|
|
17
|
+
if 'sys_getframe_n' not in extra:
|
|
18
|
+
extra['sys_getframe_n'] = 3
|
|
13
19
|
super()._log(level, msg, args, exc_info, extra, stack_info)
|
|
@@ -97,10 +97,10 @@ class BrokerConnConfig(DataClassBase):
|
|
|
97
97
|
|
|
98
98
|
class FunboostCommonConfig(DataClassBase):
|
|
99
99
|
# nb_log包的第几个日志模板,内置了7个模板,可以在你当前项目根目录下的nb_log_config.py文件扩展模板。
|
|
100
|
-
# NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER = 11 # 7是简短的不可跳转,5是可点击跳转的,11是可显示ip 进程
|
|
100
|
+
# NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER = 11 # 7是简短的不可跳转,5是可点击跳转的,11是可显示ip 进程 线程的模板,也可以亲自设置日志模板不传递数字。
|
|
101
101
|
NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER = logging.Formatter(
|
|
102
102
|
f'%(asctime)s-({nb_log_config_default.computer_ip},{nb_log_config_default.computer_name})-[p%(process)d_t%(thread)d] - %(name)s - "%(filename)s:%(lineno)d" - %(funcName)s - %(levelname)s - %(task_id)s - %(message)s',
|
|
103
|
-
"%Y-%m-%d %H:%M:%S",) # 这个是带task_id
|
|
103
|
+
"%Y-%m-%d %H:%M:%S",) # 这个是带task_id的日志模板,日志可以显示task_id,方便用户串联起来排查某一个人物消息的所有日志.
|
|
104
104
|
|
|
105
105
|
TIMEZONE = 'Asia/Shanghai' # 时区
|
|
106
106
|
|
|
@@ -159,13 +159,13 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
159
159
|
logger_prefix = self.publisher_params.logger_prefix
|
|
160
160
|
if logger_prefix != '':
|
|
161
161
|
logger_prefix += '--'
|
|
162
|
-
logger_name = f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
163
|
-
log_filename = self.publisher_params.log_filename or f'funboost.{self.queue_name}.log'
|
|
164
|
-
self.logger = nb_log.LogManager(logger_name,logger_cls=TaskIdLogger).get_logger_and_add_handlers(
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
162
|
+
self.logger_name = self.publisher_params.logger_name or f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
163
|
+
self.log_filename = self.publisher_params.log_filename or f'funboost.{self.queue_name}.log'
|
|
164
|
+
self.logger = nb_log.LogManager(self.logger_name, logger_cls=TaskIdLogger).get_logger_and_add_handlers(
|
|
165
|
+
log_level_int=self.publisher_params.log_level,
|
|
166
|
+
log_filename=self.log_filename if self.publisher_params.create_logger_file else None,
|
|
167
|
+
error_log_filename=nb_log.generate_error_file_name(self.log_filename),
|
|
168
|
+
formatter_template=FunboostCommonConfig.NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER, )
|
|
169
169
|
|
|
170
170
|
def _init_count(self):
|
|
171
171
|
self._current_time = time.time()
|
|
@@ -214,7 +214,7 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
214
214
|
decorators.handle_exception(retry_times=10, is_throw_error=True, time_sleep=0.1)(
|
|
215
215
|
self.concrete_realization_of_publish)(json.dumps(msg, ensure_ascii=False))
|
|
216
216
|
|
|
217
|
-
self.logger.debug(f'向{self._queue_name} 队列,推送消息 耗时{round(time.time() - t_start, 4)}秒 {msg_function_kw}',extra={'task_id':task_id}) # 显示msg太长了。
|
|
217
|
+
self.logger.debug(f'向{self._queue_name} 队列,推送消息 耗时{round(time.time() - t_start, 4)}秒 {msg_function_kw}', extra={'task_id': task_id}) # 显示msg太长了。
|
|
218
218
|
with self._lock_for_count:
|
|
219
219
|
self.count_per_minute += 1
|
|
220
220
|
self.publish_msg_num_total += 1
|
|
@@ -224,9 +224,9 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
224
224
|
self._init_count()
|
|
225
225
|
return AsyncResult(task_id)
|
|
226
226
|
|
|
227
|
-
def send_msg(self,msg:typing.Union[dict,str]):
|
|
227
|
+
def send_msg(self, msg: typing.Union[dict, str]):
|
|
228
228
|
"""直接发送任意消息内容到消息队列,不生成辅助参数,无视函数入参名字,不校验入参个数和键名"""
|
|
229
|
-
if isinstance(msg,dict):
|
|
229
|
+
if isinstance(msg, dict):
|
|
230
230
|
msg = json.dumps(msg, ensure_ascii=False)
|
|
231
231
|
decorators.handle_exception(retry_times=10, is_throw_error=True, time_sleep=0.1)(
|
|
232
232
|
self.concrete_realization_of_publish)(msg)
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc
CHANGED
|
Binary file
|
|
@@ -64,10 +64,10 @@ def func_timeout(timeout, func, args=(), kwargs=None):
|
|
|
64
64
|
exception = []
|
|
65
65
|
isStopped = False
|
|
66
66
|
|
|
67
|
-
from funboost.core.current_task import
|
|
67
|
+
from funboost.core.current_task import thread_current_task
|
|
68
68
|
|
|
69
69
|
def funcwrap(args2, kwargs2,_fct_local_data_dict):
|
|
70
|
-
fct =
|
|
70
|
+
fct = thread_current_task
|
|
71
71
|
fct._fct_local_data.__dict__.update(_fct_local_data_dict) # 把funboost的消费线程上下文需要传递到超时线程上下文里面来.
|
|
72
72
|
try:
|
|
73
73
|
ret.append( func(*args2, **kwargs2) )
|
|
@@ -86,7 +86,7 @@ def func_timeout(timeout, func, args=(), kwargs=None):
|
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
# fct = funboost_current_task()
|
|
89
|
-
thread = StoppableThread(target=funcwrap, args=(args, kwargs,
|
|
89
|
+
thread = StoppableThread(target=funcwrap, args=(args, kwargs,thread_current_task._fct_local_data.__dict__))
|
|
90
90
|
thread.daemon = True
|
|
91
91
|
|
|
92
92
|
thread.start()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 43.
|
|
3
|
+
Version: 43.1
|
|
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
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
funboost/__init__.py,sha256=
|
|
1
|
+
funboost/__init__.py,sha256=pUJ4iS5AiUCxH6utC0qcxgNhw2bNTzZdZQruG3ITny8,3832
|
|
2
2
|
funboost/__init__old.py,sha256=07A1MLsxLtuRQQOIfDyphddOwNBrGe34enoHWAnjV14,20379
|
|
3
3
|
funboost/__main__.py,sha256=-6Nogi666Y0LN8fVm3JmHGTOk8xEGWvotW_GDbSaZME,1065
|
|
4
|
-
funboost/constant.py,sha256=
|
|
5
|
-
funboost/funboost_config_deafult.py,sha256=
|
|
4
|
+
funboost/constant.py,sha256=Yxt3WJt9D8ybcrgiojOy0qjnq5mffwTnTJplerGL0Oo,7188
|
|
5
|
+
funboost/funboost_config_deafult.py,sha256=YRU4TyJ_OTcnX_ReC7i7Dx_eLP0OmbiLAbCZD1yVeV4,6613
|
|
6
6
|
funboost/set_frame_config.py,sha256=bEsW4a4EuE3PpyypNuWSfsB-_bvT94pktJGKk4r-rlo,14328
|
|
7
7
|
funboost/assist/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
funboost/assist/celery_helper.py,sha256=ae8nbwHEulXa9gSKrNkW87SS8BZx7ZJwzWYY6hniE2g,5603
|
|
@@ -33,7 +33,7 @@ funboost/concurrent_pool/backup/async_pool_executor0223.py,sha256=RVUZiylUvpTm6U
|
|
|
33
33
|
funboost/concurrent_pool/backup/async_pool_executor_back.py,sha256=KL6zEQaa1KkZOlAO85mCC1gwLm-YC5Ghn21IUom0UKM,9598
|
|
34
34
|
funboost/concurrent_pool/backup/async_pool_executor_janus.py,sha256=OHMWJ9l3EYTpPpcrPrGGKd4K0tmQ2PN8HiX0Dta0EOo,5728
|
|
35
35
|
funboost/consumers/__init__.py,sha256=ZXY_6Kut1VYNQiF5aWEgIWobsW1ht9YUP0TdRZRWFqI,126
|
|
36
|
-
funboost/consumers/base_consumer.py,sha256=
|
|
36
|
+
funboost/consumers/base_consumer.py,sha256=fRP9oHn8yt2Te0zPg6e5SvuOgS6RaciX8lcn8y_Fphs,73843
|
|
37
37
|
funboost/consumers/celery_consumer.py,sha256=W25gbGyimf8KG5lLbtgar3Ix7F3O4cIRBLtRq8nJ0AE,9216
|
|
38
38
|
funboost/consumers/confirm_mixin.py,sha256=eY6fNwx51Hn4bQSYRjyTRwOqfCGsikVnd2Ga_Ep31N4,6062
|
|
39
39
|
funboost/consumers/dramatiq_consumer.py,sha256=ozmeAfeF0U-YNYHK4suQB0N264h5AZdfMH0O45Mh-8A,2229
|
|
@@ -82,22 +82,22 @@ funboost/contrib/save_result_status_to_sqldb.py,sha256=AxvD7nHs4sjr9U0kwEZzyPKrs
|
|
|
82
82
|
funboost/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
83
|
funboost/core/active_cousumer_info_getter.py,sha256=09fEc-BTEIRfDDfHmOvKnMjLjtOyp4edLsUlAXUR_Qs,4966
|
|
84
84
|
funboost/core/booster.py,sha256=k6UPxfW7QdhfdVu9yprHkF46jLO2eXTqTZPYkukmyZc,15741
|
|
85
|
-
funboost/core/current_task.py,sha256=
|
|
85
|
+
funboost/core/current_task.py,sha256=rAIQVLqYqtlHVRkjl17yki-mqvuMb640ssGmto4RSdA,4864
|
|
86
86
|
funboost/core/exceptions.py,sha256=pLF7BkRJAfDiWp2_xGZqencmwdPiSQI1NENbImExknY,1311
|
|
87
87
|
funboost/core/fabric_deploy_helper.py,sha256=KPjifNy1G1tDOT2eaR0X8hegot0HUk5vF-P1DnhxME4,8941
|
|
88
|
-
funboost/core/func_params_model.py,sha256=
|
|
88
|
+
funboost/core/func_params_model.py,sha256=ChxvSq_iVuYnGR_CdN9h9qNtvBq8sZ4BocdzCjgsQHc,18167
|
|
89
89
|
funboost/core/function_result_status_config.py,sha256=PyjqAQOiwsLt28sRtH-eYRjiI3edPFO4Nde0ILFRReE,1764
|
|
90
90
|
funboost/core/function_result_status_saver.py,sha256=UdokGSwU630t70AZnT9Ecj7GpYXORBDivlc9kadoI2E,9172
|
|
91
91
|
funboost/core/helper_funs.py,sha256=M9Ad9EzgHdP581X-vuFgCavJRoezLGXlXSFg7zyMWD0,1578
|
|
92
92
|
funboost/core/kill_remote_task.py,sha256=MZ5vWLGt6SxyN76h5Lf_id9tyVUzjR-qXNyJwXaGlZY,8129
|
|
93
|
-
funboost/core/lazy_impoter.py,sha256=
|
|
93
|
+
funboost/core/lazy_impoter.py,sha256=DEVcRGieYQA_3pMKGyrKeB24eQJKEY5F7Qe3w1q61k4,670
|
|
94
94
|
funboost/core/loggers.py,sha256=173aXdqE8nAe8t6OcVMNAFsCUClVrWQovdQhTAg9IyM,2407
|
|
95
95
|
funboost/core/msg_result_getter.py,sha256=oZDuLDR5XQNzzvgDTsA7wroICToPwrkU9-OAaXXUQSk,8031
|
|
96
|
-
funboost/core/muliti_process_enhance.py,sha256=
|
|
97
|
-
funboost/core/task_id_logger.py,sha256=
|
|
96
|
+
funboost/core/muliti_process_enhance.py,sha256=64rkVa5Eel-0EY2B7lc1dQTRwX4ehARVvcxQVDa6jr0,3568
|
|
97
|
+
funboost/core/task_id_logger.py,sha256=lR19HQcX6Pp8laURCD656xNpF_JP6nLB3zUKI69EWzE,864
|
|
98
98
|
funboost/core/try_get_user_funboost_common_config.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
99
|
funboost/core/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
|
-
funboost/core/cli/discovery_boosters.py,sha256=
|
|
100
|
+
funboost/core/cli/discovery_boosters.py,sha256=UOtmbAsRduMe8Xe6NHJ11c3w7BbsxmqfOIdcWmK_qpE,3926
|
|
101
101
|
funboost/core/cli/funboost_cli_user_templ.py,sha256=XUpKLxRKtYfebPUM8wii64kB0HW8L7j9LnRpT0xCfQI,2243
|
|
102
102
|
funboost/core/cli/funboost_fire.py,sha256=OT0SNi9Zb0Tom2E0cWuArQs0obUowAA_rpCF7GdaKPs,5065
|
|
103
103
|
funboost/factories/__init__.py,sha256=s7kKKjR1HU5eMjPD6r5b-SXTVMo1zBp2JjOAtkyt5Yo,178
|
|
@@ -122,7 +122,7 @@ funboost/function_result_web/static/js/jquery-1.11.0.min.js,sha256=ryQZ3RXgnqkTz
|
|
|
122
122
|
funboost/function_result_web/templates/index.html,sha256=YM0582Q4t2da-xBf3Ga0McIfcsT9H98rjZck-irMkGo,20387
|
|
123
123
|
funboost/function_result_web/templates/login.html,sha256=q37dj7O0LeyiV38Zd5P1Qn_qmhjdFomuYTRY1Yk48Bo,2007
|
|
124
124
|
funboost/publishers/__init__.py,sha256=xqBHlvsJQVPfbdvP84G0LHmVB7-pFBS7vDnX1Uo9pVY,131
|
|
125
|
-
funboost/publishers/base_publisher.py,sha256=
|
|
125
|
+
funboost/publishers/base_publisher.py,sha256=q78zraFleZv4YkVABFW1WEwMIgZ0TKozJZkp6RbwHXc,15070
|
|
126
126
|
funboost/publishers/celery_publisher.py,sha256=uc9N1uLW74skUCw8dsnvxORM2O3cy4SiI7tUZRmvkHA,2336
|
|
127
127
|
funboost/publishers/celery_publisher000.py,sha256=2XLOyU2__vlIUTi5L15uf0BJqAIjxbc3kCLIRDSOY9w,3966
|
|
128
128
|
funboost/publishers/confluent_kafka_publisher.py,sha256=gC4SUk6I_7zjSngcbTI7oTJ7sza3oE3PE19KQkwCpn4,4802
|
|
@@ -238,7 +238,7 @@ funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpyt
|
|
|
238
238
|
funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc,sha256=UyZJDglEyha0S4-6X4Jno7rAOPbXq6E-km0Fi_JnsJU,2017
|
|
239
239
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py,sha256=mvlE6n4bPDVem2cVBJLItEG_JEQhCogLjukFkJKF8c8,5246
|
|
240
240
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py,sha256=rnAnFnfFPy5_x3lw4xcRJ_fzjHZuxWrdLdVujqglHwg,587
|
|
241
|
-
funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py,sha256=
|
|
241
|
+
funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py,sha256=8BTxwQ70mNWvUxy_6Yx83PDLv-00RlCDRuuDLw5-PoY,9669
|
|
242
242
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py,sha256=tUEaspemq_dS460EQvUMMSxeeyjIbgfEHIdxIC6ZhaU,3974
|
|
243
243
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py,sha256=9tpZLQ3-zIgU_ixazydwZmw8rFg7ybjI9alNYfSvwRk,169
|
|
244
244
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py,sha256=Odvg1FtXTEC--Ru1EIfsHASamBpOm9hdXY7OnlEUObA,280
|
|
@@ -249,7 +249,7 @@ funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init
|
|
|
249
249
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc,sha256=ACdP5kS3R-5Bt2Qk-sq6RHF3LaOyywwVyM9R7L8m1-Q,763
|
|
250
250
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc,sha256=5J3PkkFxVDKw4aFL59LwtJC5SDtteQT9ibIBR_1DkF8,767
|
|
251
251
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc,sha256=lm1W6uTCo09YyK_P5WNpBr1dBMMBwl8Pt6ItwMyBNGA,11447
|
|
252
|
-
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc,sha256=
|
|
252
|
+
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc,sha256=dgBdmSIDLMUNKHImidPAVUCMCD2PxjWv2mwtM932L4U,8392
|
|
253
253
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc,sha256=aYRhjAhdcweDRI_wlh1UU_tFnWHr9at5Ywz-p6tw0QI,8001
|
|
254
254
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc,sha256=9v_YQPA5cUlVs-3UHbVwfiIE8UBzPD1HyWzApfBSR7Y,4592
|
|
255
255
|
funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc,sha256=UXQJRMqqUOpudiCLxFYM2RWF8JXerjUttXl6Fiw55OE,3708
|
|
@@ -264,9 +264,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
|
|
|
264
264
|
funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
|
|
265
265
|
funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
|
|
266
266
|
funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
|
|
267
|
-
funboost-43.
|
|
268
|
-
funboost-43.
|
|
269
|
-
funboost-43.
|
|
270
|
-
funboost-43.
|
|
271
|
-
funboost-43.
|
|
272
|
-
funboost-43.
|
|
267
|
+
funboost-43.1.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
|
|
268
|
+
funboost-43.1.dist-info/METADATA,sha256=gff3PpG5XbihV95vroXQonZMfW48XwTiGyoEuUxfEw8,30477
|
|
269
|
+
funboost-43.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
270
|
+
funboost-43.1.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
|
|
271
|
+
funboost-43.1.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
|
|
272
|
+
funboost-43.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|