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

Files changed (72) hide show
  1. funboost/core/booster.py +4 -4
  2. funboost/core/exceptions.py +1 -1
  3. funboost/core/func_params_model.py +15 -4
  4. funboost/funboost_config_deafult.py +0 -56
  5. funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  6. funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  7. funboost/set_frame_config.py +1 -1
  8. funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
  9. funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
  10. funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
  11. funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
  12. funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
  13. funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
  14. funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +59 -59
  15. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
  16. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
  17. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
  18. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
  19. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
  20. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
  21. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
  22. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
  23. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
  24. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
  25. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
  26. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
  27. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
  28. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
  29. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
  30. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
  31. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
  32. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
  33. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
  34. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
  35. funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
  36. funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +4804 -4804
  37. funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +8 -8
  38. funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +1668 -1668
  39. funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +96 -96
  40. funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +306 -306
  41. funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +15 -15
  42. funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +329 -329
  43. funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +61 -61
  44. funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +133 -133
  45. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +16 -16
  46. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
  47. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
  48. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
  49. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
  50. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
  51. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
  52. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
  53. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
  54. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
  55. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
  56. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
  57. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
  58. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
  59. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
  60. funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
  61. funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +234 -234
  62. funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +98 -98
  63. funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +7 -7
  64. funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +7 -7
  65. funboost/utils/times/__init__.py +85 -85
  66. funboost/utils/times/version.py +1 -1
  67. {funboost-40.1.dist-info → funboost-40.4.dist-info}/METADATA +547 -544
  68. {funboost-40.1.dist-info → funboost-40.4.dist-info}/RECORD +72 -42
  69. {funboost-40.1.dist-info → funboost-40.4.dist-info}/WHEEL +1 -1
  70. {funboost-40.1.dist-info → funboost-40.4.dist-info}/LICENSE +0 -0
  71. {funboost-40.1.dist-info → funboost-40.4.dist-info}/entry_points.txt +0 -0
  72. {funboost-40.1.dist-info → funboost-40.4.dist-info}/top_level.txt +0 -0
funboost/core/booster.py CHANGED
@@ -36,8 +36,8 @@ class Booster:
36
36
 
37
37
  """
38
38
  '''
39
- # @boost('queue_test_f01', qps=0.2, broker_kind=2) # 老的入参方式
40
- @boost(BoosterParams(queue_name='queue_test_f01', qps=0.2, broker_kind=2)) # 新的入参方式,所有入参放在 最流行的三方包 pydantic model BoosterParams 里面.
39
+ # @boost('queue_test_f01', qps=0.2, ) # 老的入参方式
40
+ @boost(BoosterParams(queue_name='queue_test_f01', qps=0.2, )) # 新的入参方式,所有入参放在 最流行的三方包 pydantic model BoosterParams 里面.
41
41
  def f(a, b):
42
42
  print(a + b)
43
43
 
@@ -58,7 +58,7 @@ class Booster:
58
58
  elif isinstance(queue_name, BoosterParams):
59
59
  boost_params = queue_name
60
60
  if isinstance(queue_name, str) or kwargs:
61
- flogger.warning(f''' funboost 40.0版本以后: {BoostDecoParamsIsOldVersion.new_version_change_hint}''')
61
+ flogger.warning(f'''你的 {queue_name} 队列, funboost 40.0版本以后: {BoostDecoParamsIsOldVersion.new_version_change_hint}''')
62
62
  boost_params_merge = boost_params.copy()
63
63
  boost_params_merge.update_from_dict(kwargs)
64
64
  self.boost_params = boost_params_merge
@@ -196,7 +196,7 @@ class BoostersManager:
196
196
  @classmethod
197
197
  def get_or_create_booster_by_queue_name(cls, queue_name, ) -> Booster:
198
198
  """
199
- 当前进程获得booster对象。如果是多进程,会在新的进程内部创建一个新的booster对象,因为多进程操作有些中间件的同一个conn不行.
199
+ 当前进程获得booster对象,如果是多进程,会在新的进程内部创建一个新的booster对象,因为多进程操作有些中间件的同一个conn不行.
200
200
  :param queue_name: 就是 @boost的入参。
201
201
  :return:
202
202
  """
@@ -12,7 +12,7 @@ class ExceptionForPushToDlxqueue(Exception):
12
12
 
13
13
  class BoostDecoParamsIsOldVersion(Exception):
14
14
  new_version_change_hint = """
15
- 你的@boost入参是老的方式.
15
+ 你的@boost入参是老的方式,建议用新的入参方式,老入参方式不再支持函数入参代码自动补全了。
16
16
 
17
17
  老版本的@boost装饰器方式是:
18
18
  @boost('queue_name_xx',qps=3)
@@ -7,7 +7,7 @@ from collections import OrderedDict
7
7
 
8
8
  from funboost.concurrent_pool import FunboostBaseConcurrentPool
9
9
  from funboost.constant import ConcurrentModeEnum, BrokerEnum
10
- from pydantic import BaseModel, validator, root_validator, PrivateAttr, Field
10
+ from pydantic import BaseModel, validator, root_validator, PrivateAttr, Field, BaseConfig
11
11
 
12
12
  # noinspection PyUnresolvedReferences
13
13
  from funboost.core.loggers import develop_logger
@@ -32,6 +32,9 @@ def patch_for_pydantic_field_deepcopy():
32
32
 
33
33
  patch_for_pydantic_field_deepcopy()
34
34
 
35
+ class NoExtraFieldsConfig(BaseConfig):
36
+ allow_mutation = False
37
+ extra = "forbid"
35
38
 
36
39
  class BaseJsonAbleModel(BaseModel):
37
40
  """
@@ -45,7 +48,7 @@ class BaseJsonAbleModel(BaseModel):
45
48
  for k, v in model_dict.items():
46
49
  if isinstance(v, typing.Callable):
47
50
  model_dict_copy[k] = str(v)
48
- elif k in ['specify_concurrent_pool', 'specify_async_loop']:
51
+ elif k in ['specify_concurrent_pool', 'specify_async_loop'] and v is not None:
49
52
  model_dict_copy[k] = str(v)
50
53
  else:
51
54
  model_dict_copy[k] = v
@@ -72,9 +75,10 @@ class BaseJsonAbleModel(BaseModel):
72
75
  setattr(self, k, v)
73
76
  return self
74
77
 
75
- class Config:
78
+ class Config(BaseConfig):
76
79
  arbitrary_types_allowed = True
77
-
80
+ # allow_mutation = False
81
+ extra = "forbid"
78
82
 
79
83
  class FunctionResultStatusPersistanceConfig(BaseJsonAbleModel):
80
84
  is_save_status: bool # 是否保存函数的运行状态信息
@@ -181,6 +185,11 @@ class BoosterParams(BaseJsonAbleModel):
181
185
 
182
186
  if values['concurrent_mode'] not in ConcurrentModeEnum.__dict__.values():
183
187
  raise ValueError('设置的并发模式不正确')
188
+ # if not set(values.keys()).issubset(set(BoosterParams.__fields__.keys())):
189
+ # raise ValueError(f'{cls.__name__} 的字段包含了父类 BoosterParams 不存在的字段')
190
+ for k in values.keys():
191
+ if k not in BoosterParams.__fields__.keys():
192
+ raise ValueError(f'{cls.__name__} 的字段新增了父类 BoosterParams 不存在的字段 "{k}"') # 使 BoosterParams的子类,不能增加字段,只能覆盖字段.
184
193
  return values
185
194
 
186
195
 
@@ -243,3 +252,5 @@ if __name__ == '__main__':
243
252
  # print(FunctionResultStatusPersistanceConfig(is_save_result=True, is_save_status=True, expire_seconds=70 * 24 * 3600).update_from_kwargs(expire_seconds=100).get_str_dict())
244
253
  #
245
254
  # print(PriorityConsumingControlConfig().get_str_dict())
255
+
256
+ print(BoosterParams(queue_name='3213'))
@@ -101,59 +101,3 @@ class FunboostCommonConfig(DataClassBase):
101
101
  TIMEZONE = 'Asia/Shanghai'
102
102
 
103
103
 
104
- # class BoostDecoratorDefaultParams(DataClassBase):
105
- # """
106
- # @boost装饰器的默认全局配置
107
- #
108
- # BoostDecoratorDefaultParams是@boost装饰器默认的全局入参。如果boost没有亲自指定某个入参,就自动使用这里的配置。
109
- # 这里的值不用配置,在boost装饰器中可以为每个消费者指定不同的入参,除非你嫌弃每个 boost 装饰器相同入参太多了,那么可以设置这里的全局默认值。
110
- #
111
- # 例如用户不想每次在boost装饰器指定broker_kind为哪种消息队列,可以设置broker_kind为用户自己希望的默认消息队列类型
112
- #
113
- # boost入参可以ide跳转到boost函数的docstring查看
114
- # boost入参也可以看文档3.3章节 https://funboost.readthedocs.io/zh/latest/articles/c3.html
115
- #
116
- # BoostDecoratorDefaultParams这个类的属性名字和boost装饰器的入参名字一模一样,只有 queue_name 必须每个装饰器是不同的名字,不能作为全局的。
117
- # 所以boost装饰器只有一个是必传参数。
118
- # """
119
- #
120
- # broker_kind: int = BrokerEnum.PERSISTQUEUE # 中间件选型见3.1章节 https://funboost.readthedocs.io/zh/latest/articles/c3.html
121
- #
122
- # concurrent_mode = ConcurrentModeEnum.THREADING
123
- # concurrent_num = 50
124
- # specify_concurrent_pool = None
125
- # specify_async_loop = None
126
- # qps: float = 0
127
- # is_using_distributed_frequency_control = False
128
- # is_send_consumer_hearbeat_to_redis = False
129
- #
130
- # max_retry_times = 3
131
- # is_push_to_dlx_queue_when_retry_max_times = False
132
- #
133
- # consumin_function_decorator = None
134
- # function_timeout = 0
135
- #
136
- # log_level = 10
137
- # logger_prefix = ''
138
- # create_logger_file = True
139
- # log_filename = None
140
- # is_show_message_get_from_broker = False
141
- # is_print_detail_exception = True
142
- #
143
- # msg_expire_senconds = 0
144
- #
145
- # do_task_filtering = False
146
- # task_filtering_expire_seconds = 0
147
- #
148
- # # function_result_status_persistance_conf = FunctionResultStatusPersistanceConfig(False, False, 7 * 24 * 3600)
149
- # user_custom_record_process_info_func = None
150
- #
151
- # is_using_rpc_mode = False
152
- # is_support_remote_kill_task = False
153
- #
154
- # is_do_not_run_by_specify_time_effect = False
155
- # do_not_run_by_specify_time = ('10:00:00', '22:00:00')
156
- #
157
- # schedule_tasks_on_main_thread = False
158
- #
159
- # broker_exclusive_config = {}
@@ -140,7 +140,7 @@ def use_config_form_funboost_config_module():
140
140
  funboost_config_deafult.FunboostCommonConfig.update_cls_attribute(**m.FunboostCommonConfig().get_dict())
141
141
  # funboost_config_deafult.BoostDecoratorDefaultParams.update_cls_attribute(**m.BoostDecoratorDefaultParams().get_dict())
142
142
  if hasattr(m,'BoostDecoratorDefaultParams'):
143
- raise ValueError('funboost 40.0版本之后,采用 pydantic model BoostParams类或子类入参,不支持 funboost_config.py的 BoostDecoratorDefaultParams配置')
143
+ raise ValueError('funboost 40.0版本之后,采用 pydantic model BoostParams类或子类入参,不支持 funboost_config.py的 BoostDecoratorDefaultParams 配置,请删除掉 BoostDecoratorDefaultParams 这个配置')
144
144
 
145
145
 
146
146
  except ModuleNotFoundError:
@@ -1,59 +1,59 @@
1
- from aioredis.client import Redis, StrictRedis
2
- from aioredis.connection import (
3
- BlockingConnectionPool,
4
- Connection,
5
- ConnectionPool,
6
- SSLConnection,
7
- UnixDomainSocketConnection,
8
- )
9
- from aioredis.exceptions import (
10
- AuthenticationError,
11
- AuthenticationWrongNumberOfArgsError,
12
- BusyLoadingError,
13
- ChildDeadlockedError,
14
- ConnectionError,
15
- DataError,
16
- InvalidResponse,
17
- PubSubError,
18
- ReadOnlyError,
19
- RedisError,
20
- ResponseError,
21
- TimeoutError,
22
- WatchError,
23
- )
24
- from aioredis.utils import from_url
25
-
26
-
27
- def int_or_str(value):
28
- try:
29
- return int(value)
30
- except ValueError:
31
- return value
32
-
33
-
34
- __version__ = "2.0.1"
35
- VERSION = tuple(map(int_or_str, __version__.split(".")))
36
-
37
- __all__ = [
38
- "AuthenticationError",
39
- "AuthenticationWrongNumberOfArgsError",
40
- "BlockingConnectionPool",
41
- "BusyLoadingError",
42
- "ChildDeadlockedError",
43
- "Connection",
44
- "ConnectionError",
45
- "ConnectionPool",
46
- "DataError",
47
- "from_url",
48
- "InvalidResponse",
49
- "PubSubError",
50
- "ReadOnlyError",
51
- "Redis",
52
- "RedisError",
53
- "ResponseError",
54
- "SSLConnection",
55
- "StrictRedis",
56
- "TimeoutError",
57
- "UnixDomainSocketConnection",
58
- "WatchError",
59
- ]
1
+ from aioredis.client import Redis, StrictRedis
2
+ from aioredis.connection import (
3
+ BlockingConnectionPool,
4
+ Connection,
5
+ ConnectionPool,
6
+ SSLConnection,
7
+ UnixDomainSocketConnection,
8
+ )
9
+ from aioredis.exceptions import (
10
+ AuthenticationError,
11
+ AuthenticationWrongNumberOfArgsError,
12
+ BusyLoadingError,
13
+ ChildDeadlockedError,
14
+ ConnectionError,
15
+ DataError,
16
+ InvalidResponse,
17
+ PubSubError,
18
+ ReadOnlyError,
19
+ RedisError,
20
+ ResponseError,
21
+ TimeoutError,
22
+ WatchError,
23
+ )
24
+ from aioredis.utils import from_url
25
+
26
+
27
+ def int_or_str(value):
28
+ try:
29
+ return int(value)
30
+ except ValueError:
31
+ return value
32
+
33
+
34
+ __version__ = "2.0.1"
35
+ VERSION = tuple(map(int_or_str, __version__.split(".")))
36
+
37
+ __all__ = [
38
+ "AuthenticationError",
39
+ "AuthenticationWrongNumberOfArgsError",
40
+ "BlockingConnectionPool",
41
+ "BusyLoadingError",
42
+ "ChildDeadlockedError",
43
+ "Connection",
44
+ "ConnectionError",
45
+ "ConnectionPool",
46
+ "DataError",
47
+ "from_url",
48
+ "InvalidResponse",
49
+ "PubSubError",
50
+ "ReadOnlyError",
51
+ "Redis",
52
+ "RedisError",
53
+ "ResponseError",
54
+ "SSLConnection",
55
+ "StrictRedis",
56
+ "TimeoutError",
57
+ "UnixDomainSocketConnection",
58
+ "WatchError",
59
+ ]