funboost 48.1__py3-none-any.whl → 48.2__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__ = "48.1"
16
+ __version__ = "48.2"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -1131,47 +1131,53 @@ class MetricCalculation:
1131
1131
  self.execute_task_times_every_unit_time_temp = 0 # 每单位时间执行了多少次任务。
1132
1132
  self.execute_task_times_every_unit_time_temp_fail =0 # 每单位时间执行了多少次任务失败。
1133
1133
  self.current_time_for_execute_task_times_every_unit_time = time.time()
1134
- self.consuming_function_cost_time_total_every_unit_time = 0
1134
+ self.consuming_function_cost_time_total_every_unit_time_tmp = 0
1135
1135
  self.last_execute_task_time = time.time() # 最近一次执行任务的时间。
1136
1136
  self.last_x_s_execute_count = 0
1137
1137
  self.last_x_s_execute_count_fail = 0
1138
+ self.last_x_s_avarage_function_spend_time = None
1138
1139
  self.last_show_remaining_execution_time = 0
1139
1140
  self.show_remaining_execution_time_interval = 300
1140
1141
  self.msg_num_in_broker = 0
1141
1142
  self.last_get_msg_num_ts = 0
1142
1143
  self.last_timestamp_when_has_task_in_queue = 0
1143
1144
  self.last_timestamp_print_msg_num = 0
1144
- self.avarage_function_spend_time = None
1145
+
1145
1146
  self.total_consume_count_from_start =0
1146
1147
  self.total_consume_count_from_start_fail =0
1148
+ self.total_cost_time_from_start = 0 # 函数运行累计花费时间
1149
+ self.last_x_s_total_cost_time = None
1147
1150
 
1148
1151
  def cal(self,t_start_run_fun:float,current_function_result_status:FunctionResultStatus):
1152
+ self.last_execute_task_time = time.time()
1153
+ current_msg_cost_time = time.time() - t_start_run_fun
1149
1154
  self.execute_task_times_every_unit_time_temp += 1
1150
1155
  self.total_consume_count_from_start +=1
1156
+ self.total_cost_time_from_start += current_msg_cost_time
1151
1157
  if current_function_result_status.success is False:
1152
1158
  self.execute_task_times_every_unit_time_temp_fail += 1
1153
1159
  self.total_consume_count_from_start_fail +=1
1154
- self.consuming_function_cost_time_total_every_unit_time += time.time() - t_start_run_fun
1155
- self.last_execute_task_time = time.time()
1160
+ self.consuming_function_cost_time_total_every_unit_time_tmp += current_msg_cost_time
1161
+
1156
1162
  if time.time() - self.current_time_for_execute_task_times_every_unit_time > self.unit_time_for_count:
1157
1163
  self.last_x_s_execute_count = self.execute_task_times_every_unit_time_temp
1158
1164
  self.last_x_s_execute_count_fail = self.execute_task_times_every_unit_time_temp_fail
1159
- self.avarage_function_spend_time = round(self.consuming_function_cost_time_total_every_unit_time / self.last_x_s_execute_count, 4)
1165
+ self.last_x_s_total_cost_time = self.consuming_function_cost_time_total_every_unit_time_tmp
1166
+ self.last_x_s_avarage_function_spend_time = round(self.last_x_s_total_cost_time / self.last_x_s_execute_count, 3)
1160
1167
  msg = f'{self.unit_time_for_count} 秒内执行了 {self.last_x_s_execute_count} 次函数 [ {self.consumer.consuming_function.__name__} ] ,' \
1161
- f'失败了{self.last_x_s_execute_count_fail} 次,函数平均运行耗时 {self.avarage_function_spend_time} 秒。 '
1168
+ f'失败了{self.last_x_s_execute_count_fail} 次,函数平均运行耗时 {self.last_x_s_avarage_function_spend_time} 秒。 '
1162
1169
  self.consumer.logger.info(msg)
1163
1170
  if time.time() - self.last_show_remaining_execution_time > self.show_remaining_execution_time_interval:
1164
1171
  self.msg_num_in_broker = self.consumer.publisher_of_same_queue.get_message_count()
1165
1172
  self.last_get_msg_num_ts = time.time()
1166
1173
  if self.msg_num_in_broker != -1: # 有的中间件无法统计或没实现统计队列剩余数量的,统一返回的是-1,不显示这句话。
1167
- # msg += f''' ,预计还需要 {time_util.seconds_to_hour_minute_second(self._msg_num_in_broker * avarage_function_spend_time / active_consumer_num)} 时间 才能执行完成 {self._msg_num_in_broker}个剩余的任务'''
1168
1174
  need_time = time_util.seconds_to_hour_minute_second(self.msg_num_in_broker / (self.execute_task_times_every_unit_time_temp / self.unit_time_for_count) /
1169
1175
  self.consumer._distributed_consumer_statistics.active_consumer_num)
1170
1176
  msg += f''' 预计还需要 {need_time} 时间 才能执行完成 队列 {self.consumer.queue_name} 中的 {self.msg_num_in_broker} 个剩余任务'''
1171
1177
  self.consumer.logger.info(msg)
1172
1178
  self.last_show_remaining_execution_time = time.time()
1173
1179
  self.current_time_for_execute_task_times_every_unit_time = time.time()
1174
- self.consuming_function_cost_time_total_every_unit_time = 0
1180
+ self.consuming_function_cost_time_total_every_unit_time_tmp = 0
1175
1181
  self.execute_task_times_every_unit_time_temp = 0
1176
1182
  self.execute_task_times_every_unit_time_temp_fail = 0
1177
1183
 
@@ -1181,14 +1187,16 @@ class MetricCalculation:
1181
1187
  'last_x_s_execute_count':self.last_x_s_execute_count,
1182
1188
  'last_x_s_execute_count_fail':self.last_x_s_execute_count_fail,
1183
1189
  'last_execute_task_time':self.last_execute_task_time,
1190
+ 'last_x_s_avarage_function_spend_time':self.last_x_s_avarage_function_spend_time,
1184
1191
  # 'last_show_remaining_execution_time':self.last_show_remaining_execution_time,
1185
- # 'msg_num_in_broker':self.msg_num_in_broker,
1192
+ 'msg_num_in_broker':self.msg_num_in_broker,
1186
1193
  'current_time_for_execute_task_times_every_unit_time':self.current_time_for_execute_task_times_every_unit_time,
1187
1194
  'last_timestamp_when_has_task_in_queue':self.last_timestamp_when_has_task_in_queue,
1188
- 'avarage_function_spend_time':self.avarage_function_spend_time,
1189
1195
  'total_consume_count_from_start':self.total_consume_count_from_start,
1190
- 'total_consume_count_from_start_fail':self.total_consume_count_from_start_fail
1191
-
1196
+ 'total_consume_count_from_start_fail':self.total_consume_count_from_start_fail,
1197
+ 'total_cost_time_from_start':self.total_cost_time_from_start,
1198
+ 'last_x_s_total_cost_time':self.last_x_s_total_cost_time,
1199
+ 'avarage_function_spend_time_from_start':round(self.total_cost_time_from_start / self.total_consume_count_from_start,3) if self.total_consume_count_from_start else None,
1192
1200
  }
1193
1201
 
1194
1202
 
@@ -112,6 +112,16 @@ class QueueConusmerParamsGetter(RedisMixin, FunboostFileLoggerMixin):
112
112
  if info_dict['report_ts'] > time.time() - 15 and info_dict['last_get_msg_num_ts'] > time.time() - 1200:
113
113
  queue__msg_count_dict[queue_name] = info_dict['msg_num_in_broker']
114
114
  return queue__msg_count_dict
115
+
116
+ @staticmethod
117
+ def _sum_filed_from_active_consumers(active_consumers:typing.List[dict],filed:str):
118
+ s = 0
119
+ for c in active_consumers:
120
+ # print(c)
121
+ if c[filed]:
122
+ # print(c[filed])
123
+ s+=c[filed]
124
+ return s
115
125
 
116
126
  def get_queue_params_and_active_consumers(self):
117
127
  queue__active_consumers_map = ActiveCousumerProcessInfoGetter().get_all_hearbeat_info_partition_by_queue_name()
@@ -121,19 +131,29 @@ class QueueConusmerParamsGetter(RedisMixin, FunboostFileLoggerMixin):
121
131
  queue_params_and_active_consumers = {}
122
132
 
123
133
  for queue, consumer_params in queue__consumer_params_map.items():
134
+
124
135
  active_consumers = queue__active_consumers_map.get(queue, [])
125
- all_consumers_last_x_s_execute_count = 0
126
- all_consumers_last_x_s_execute_count_fail =0
127
- for c in active_consumers:
128
- all_consumers_last_x_s_execute_count += c['last_x_s_execute_count']
129
- all_consumers_last_x_s_execute_count_fail += c['last_x_s_execute_count_fail']
136
+ # print(queue,active_consumers)
137
+ all_consumers_last_x_s_execute_count = self._sum_filed_from_active_consumers(active_consumers,'last_x_s_execute_count')
138
+ all_consumers_last_x_s_execute_count_fail = self._sum_filed_from_active_consumers(active_consumers, 'last_x_s_execute_count_fail')
139
+ all_consumers_last_x_s_total_cost_time = self._sum_filed_from_active_consumers(active_consumers, 'last_x_s_total_cost_time')
140
+ all_consumers_last_x_s_avarage_function_spend_time = round( all_consumers_last_x_s_total_cost_time / all_consumers_last_x_s_execute_count,3) if all_consumers_last_x_s_execute_count else None
141
+
142
+ all_consumers_total_consume_count_from_start = self._sum_filed_from_active_consumers(active_consumers, 'total_consume_count_from_start')
143
+ all_consumers_total_cost_time_from_start =self._sum_filed_from_active_consumers(active_consumers, 'total_cost_time_from_start')
144
+ all_consumers_avarage_function_spend_time_from_start = round(all_consumers_total_cost_time_from_start / all_consumers_total_consume_count_from_start,3) if all_consumers_total_consume_count_from_start else None
145
+
130
146
  queue_params_and_active_consumers[queue] = {
131
- 'queue_params':consumer_params,
132
- 'active_consumers':active_consumers,
133
- 'pause_flag':queue__pause_map.get(queue,-1),
134
- 'msg_num_in_broker':queue__msg_count_dict.get(queue,None),
147
+ 'queue_params':consumer_params,
148
+ 'active_consumers':active_consumers,
149
+ 'pause_flag':queue__pause_map.get(queue,-1),
150
+ 'msg_num_in_broker':queue__msg_count_dict.get(queue,None),
135
151
  'all_consumers_last_x_s_execute_count':all_consumers_last_x_s_execute_count,
136
152
  'all_consumers_last_x_s_execute_count_fail':all_consumers_last_x_s_execute_count_fail,
153
+ 'all_consumers_last_x_s_avarage_function_spend_time':all_consumers_last_x_s_avarage_function_spend_time,
154
+ 'all_consumers_avarage_function_spend_time_from_start':all_consumers_avarage_function_spend_time_from_start,
155
+ 'all_consumers_total_consume_count_from_start':self._sum_filed_from_active_consumers(active_consumers, 'total_consume_count_from_start'),
156
+ 'all_consumers_total_consume_count_from_start_fail':self._sum_filed_from_active_consumers(active_consumers, 'total_consume_count_from_start_fail'),
137
157
  }
138
158
  return queue_params_and_active_consumers
139
159
 
@@ -35,5 +35,5 @@ max-height: 600px !important; /* 确保覆盖默认样式 */
35
35
  max-width: 100%;
36
36
  }
37
37
  .tabulator {
38
- min-width: 1500px;
38
+ /* min-width: 1500px; */
39
39
  }
@@ -57,10 +57,11 @@
57
57
  var table = new Tabulator("#queue-table", {
58
58
  theme: "bootstrap3",
59
59
  ajaxURL: "/queue/params_and_active_consumers",
60
- layout: "fitColumns",
61
- responsiveLayout: "collapse",
60
+ layout: "fitDataTable",
61
+ responsiveLayout: false,
62
62
  pagination: true,
63
63
  paginationSize: 1000,
64
+ height: "auto",
64
65
  locale: true,
65
66
  langs: {
66
67
  "zh-cn": {
@@ -77,11 +78,15 @@
77
78
  }
78
79
  },
79
80
  columns: [
80
- { title: "<br>队列名字", field: "queue_name", sorter: "string", width: 250 },
81
- { title: "broker<br>类型", field: "broker_kind", sorter: "string", width: 100 },
82
- { title: "10秒<br>完成", field: "all_consumers_last_x_s_execute_count", sorter: "number", width: 100 },
83
- { title: "10秒<br>失败", field: "all_consumers_last_x_s_execute_count_fail", sorter: "int", width: 100 },
84
- { title: "<br>消息数量", field: "msg_count", sorter: "number", width: 170,
81
+ { title: "<br><br>队列名字", field: "queue_name", sorter: "string", headerSort: true, headerHozAlign: "center", hozAlign: "left", minWidth: 200, headerWordWrap: true },
82
+ { title: "<br>broker<br>类型", field: "broker_kind", sorter: "string" },
83
+ { title: "<br>近10秒<br>完成", field: "all_consumers_last_x_s_execute_count", sorter: "number", width: 100 },
84
+ { title: "<br>近10秒<br>失败", field: "all_consumers_last_x_s_execute_count_fail", sorter: "number", width: 100 },
85
+
86
+ { title: "近10秒<br>函数运行<br>平均耗时", field: "all_consumers_last_x_s_avarage_function_spend_time", sorter: "number", width: 100 },
87
+ { title: "累计<br>函数运行<br>平均耗时", field: "all_consumers_avarage_function_spend_time_from_start", sorter: "number", width: 100 },
88
+
89
+ { title: "<br><br>消息数量", field: "msg_count", sorter: "number", width: 170,
85
90
  formatter: function(cell) {
86
91
  const row = cell.getRow().getData();
87
92
  return `
@@ -92,7 +97,7 @@
92
97
  `;
93
98
  }
94
99
  },
95
- { title: "<br>consumer数量", field: "consumer_count", sorter: "number", width: 200,
100
+ { title: "<br><br>consumer数量", field: "consumer_count", sorter: "number", width: 200,
96
101
  formatter: function(cell) {
97
102
  const row = cell.getRow().getData();
98
103
  var consumers = row.active_consumers;
@@ -107,7 +112,7 @@
107
112
  }
108
113
  },
109
114
  {
110
- title: "暂停消<br>费状态",
115
+ title: "暂停<br>消费<br>状态",
111
116
  field: "pause_flag",
112
117
  width: 100,
113
118
  formatter: function(cell) {
@@ -115,7 +120,7 @@
115
120
  }
116
121
  },
117
122
  {
118
- title: "<br>操作",
123
+ title: "<br><br>操作",
119
124
  width: 400,
120
125
  formatter: function(cell) {
121
126
  const row = cell.getRow().getData();
@@ -139,7 +144,9 @@
139
144
  consumer_count: data.active_consumers.length,
140
145
  active_consumers: data.active_consumers,
141
146
  queue_params: data.queue_params,
142
- pause_flag: data.pause_flag
147
+ pause_flag: data.pause_flag ,
148
+ all_consumers_last_x_s_avarage_function_spend_time:data.all_consumers_last_x_s_avarage_function_spend_time,
149
+ all_consumers_avarage_function_spend_time_from_start:data.all_consumers_avarage_function_spend_time_from_start
143
150
  }));
144
151
  },
145
152
  });
@@ -269,15 +276,17 @@
269
276
  <td>${consumer.code_filename}</td>,
270
277
  <td>${consumer.last_x_s_execute_count}</td>
271
278
  <td>${consumer.last_x_s_execute_count_fail}</td>
279
+ <td>${consumer.last_x_s_avarage_function_spend_time}</td>
272
280
  <td>${consumer.total_consume_count_from_start}</td>
273
281
  <td>${consumer.total_consume_count_from_start_fail}</td>
282
+ <td>${consumer.avarage_function_spend_time_from_start}</td>
274
283
  </tr>
275
284
  `;
276
285
  });
277
286
 
278
287
  const modalHtml = `
279
288
  <div class="modal" id="consumerDetailsModal" tabindex="-1" role="dialog">
280
- <div class="modal-dialog" style="width: 80%;" role="document">
289
+ <div class="modal-dialog" style="width: 90%;" role="document">
281
290
  <div class="modal-content">
282
291
  <div class="modal-header">
283
292
  <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
@@ -296,8 +305,10 @@
296
305
  <th>代码文件名</th>
297
306
  <th>近10秒<br>运行完成<br>消息个数</th>
298
307
  <th>近10秒<br>运行失败<br>消息个数</th>
308
+ <th>近10秒<br>函数运行<br>平均耗时</th>
299
309
  <th>累计<br>运行完成<br>消息个数</th>
300
310
  <th>累计<br>运行失败<br>消息个数</th>
311
+ <th>累计<br>函数运行<br>平均耗时</th>
301
312
  </tr>
302
313
  </thead>
303
314
  <tbody>
@@ -42,7 +42,6 @@
42
42
  <script type="text/javascript" src="https://unpkg.com/tabulator-tables@5.5.0/dist/js/tabulator.min.js"></script>
43
43
 
44
44
  <style>
45
-
46
45
 
47
46
  </style>
48
47
  </head>
@@ -133,7 +132,7 @@
133
132
  layout: "fitDataTable", // 改为 fitDataTable
134
133
  responsiveLayout: false, // 禁用响应式布局
135
134
  columns: [
136
- {title: "<br><br>队列名称", field: "queue_name","width":200},
135
+ {title: "<br><br>队列名称", field: "queue_name"},
137
136
  {title: "<br><br>消费函数", field: "consuming_function"},
138
137
  {title: "<br><br>主机名", field: "computer_name"},
139
138
  {title: "<br><br>IP地址", field: "computer_ip"},
@@ -143,8 +142,11 @@
143
142
 
144
143
  {title:"近10秒<br>运行完成<br>消息个数",field:"last_x_s_execute_count", formatter:"html","width":100},
145
144
  {title:"近10秒<br>运行失败<br>消息个数",field:"last_x_s_execute_count_fail", formatter:"html","width":100},
145
+ {title:"近10秒<br>函数运行<br>平均耗时",field:"last_x_s_avarage_function_spend_time", formatter:"html","width":100},
146
+
146
147
  {title:"累计<br>运行完成<br>消息个数",field:"total_consume_count_from_start", formatter:"html","width":100},
147
148
  {title:"累计<br>运行失败<br>消息个数",field:"total_consume_count_from_start_fail", formatter:"html","width":100},
149
+ {title:"累计<br>函数运行<br>平均耗时",field:"avarage_function_spend_time_from_start", formatter:"html","width":100},
148
150
 
149
151
  {title: "<br><br>代码文件", field: "code_filename"},
150
152
  // {title: "<br><br>consumer_id", field: "consumer_id"},
@@ -168,9 +170,6 @@
168
170
  }
169
171
  }
170
172
  });
171
-
172
- <!-- $("#result-table").css("width", "150%");-->
173
-
174
173
  /* result 例如 [
175
174
  {
176
175
  "code_filename": "d:/codes/funboost/test_frame/test_function_status_result_persist/test_persist.py",
@@ -132,7 +132,7 @@
132
132
  layout: "fitDataTable", // 改为 fitDataTable
133
133
  responsiveLayout: false, // 禁用响应式布局
134
134
  columns: [
135
- {title: "<br><br>队列名称", field: "queue_name","width":200},
135
+ {title: "<br><br>队列名称", field: "queue_name"},
136
136
  {title: "<br><br>消费函数", field: "consuming_function"},
137
137
  {title: "<br><br>主机名", field: "computer_name"},
138
138
  {title: "<br><br>IP地址", field: "computer_ip"},
@@ -142,8 +142,12 @@
142
142
 
143
143
  {title:"近10秒<br>运行完成<br>消息个数",field:"last_x_s_execute_count", formatter:"html","width":100},
144
144
  {title:"近10秒<br>运行失败<br>消息个数",field:"last_x_s_execute_count_fail", formatter:"html","width":100},
145
+ {title:"近10秒<br>函数运行<br>平均耗时",field:"last_x_s_avarage_function_spend_time", formatter:"html","width":100},
146
+
145
147
  {title:"累计<br>运行完成<br>消息个数",field:"total_consume_count_from_start", formatter:"html","width":100},
146
148
  {title:"累计<br>运行失败<br>消息个数",field:"total_consume_count_from_start_fail", formatter:"html","width":100},
149
+ {title:"累计<br>函数运行<br>平均耗时",field:"avarage_function_spend_time_from_start", formatter:"html","width":100},
150
+
147
151
  {title: "<br><br>代码文件", field: "code_filename"},
148
152
  // {title: "<br><br>consumer_id", field: "consumer_id"},
149
153
  {title: "<br><br>consumer_uuid", field: "consumer_uuid"},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 48.1
3
+ Version: 48.2
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=sp8FoEcQx0P6tQ7iGZwtZJShNuqNlJtsU1JlWi9KvqE,3991
1
+ funboost/__init__.py,sha256=0otNa2wf0N_7uGRvXTNKf-m9brvjsR6aA-CFUPIcG1Q,3991
2
2
  funboost/__init__old.py,sha256=9Kv3cPLnPkbzMRnuJFVkPsuDdx1CdcSIuITkpdncZSc,20382
3
3
  funboost/__main__.py,sha256=-6Nogi666Y0LN8fVm3JmHGTOk8xEGWvotW_GDbSaZME,1065
4
4
  funboost/constant.py,sha256=bsXk4UhaOvWlaIr160upSh1jPd7ckG1r9Wu-nMYg6yU,8352
@@ -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=BQgD3fvcdKKCo2F1smL24VT7FRHeDKkNTs8I2IFgXbE,84412
38
+ funboost/consumers/base_consumer.py,sha256=JxdimvcQ8oZrwVUKEdtNAW8d-iN7I8VurxS0ywH5xuA,84886
39
39
  funboost/consumers/celery_consumer.py,sha256=nQpSkzPBJ4bRpxn4i9ms0axrJiq9RWhb4lG2nAdCIig,9254
40
40
  funboost/consumers/confirm_mixin.py,sha256=5xC9AAQr_MY4tbSed8U-M6tOVmh69Qv9X0ld0JLT9Tk,6185
41
41
  funboost/consumers/dramatiq_consumer.py,sha256=ozmeAfeF0U-YNYHK4suQB0N264h5AZdfMH0O45Mh-8A,2229
@@ -85,7 +85,7 @@ funboost/contrib/queue2queue.py,sha256=4-28ULM7PTbmbOw8DG9rjlMUQCDkJNcUqkmdHAkGg
85
85
  funboost/contrib/redis_consume_latest_msg_broker.py,sha256=ESortBZ2qu_4PBCa3e3FeL2k_PClZNb74_v55HV-BOg,1902
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
- funboost/core/active_cousumer_info_getter.py,sha256=OQGpnIgeqvsYWil_e9Jjp5nCVfn-3_jdHiCEhAIHkDk,8172
88
+ funboost/core/active_cousumer_info_getter.py,sha256=aA9CDRtQKv08Y85LG1M8STwoGiIu-Vy8L5Yg48Qx27w,9925
89
89
  funboost/core/booster.py,sha256=GNQLDutqiFH8ymQZgBUi0vhzlBm9VD97usLGlAzjnJY,20287
90
90
  funboost/core/current_task.py,sha256=AuvrLjLGxfONILzQAd0Vm0nXDsDjf_7gOc3vGy_6r5I,7004
91
91
  funboost/core/exceptions.py,sha256=pLF7BkRJAfDiWp2_xGZqencmwdPiSQI1NENbImExknY,1311
@@ -114,14 +114,14 @@ funboost/factories/publisher_factotry.py,sha256=4651sxnbIAi6sFEUQdlUuv8UkbMQIE_P
114
114
  funboost/function_result_web/app.py,sha256=9wjo0nfp0BOkEQVwOngTeidX3dK1B4SGjSt0v3dJNEY,9192
115
115
  funboost/function_result_web/functions.py,sha256=c9KBiSMZbAhPJSEJsGO-Bw6on7HikqTn-1gNsGwxssk,7977
116
116
  funboost/function_result_web/__pycache__/app.cpython-37.pyc,sha256=p-jwU7xf31KOJhmhNXqj6J79PTxjMbiTU16gAotpSEw,4045
117
- funboost/function_result_web/__pycache__/functions.cpython-37.pyc,sha256=2njhSKwIQxp_F1ED4mJ39K9YXyzg1DgD70vg10H5YsI,4123
117
+ funboost/function_result_web/__pycache__/functions.cpython-37.pyc,sha256=nuuCYaGB70NR17uDq11HriUP8QnZ1cSxu1PTiFYmfzE,4123
118
118
  funboost/function_result_web/__pycache__/functions.cpython-39.pyc,sha256=YIFzI6WSDgIpu1gcpReZLaVZ5sOgj-MSJ90Z26NJxxA,4194
119
119
  funboost/function_result_web/static/assets/css/custom.css,sha256=3brvjy2aBOTIXcTUK4NV6dX5wFRqx6K2aLu_jQn63jM,7674
120
120
  funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css,sha256=JHGEmB629pipTkMag9aMaw32I8zle24p3FpsEeI6oZU,42839
121
121
  funboost/function_result_web/static/assets/img/user.jpg,sha256=Vz1A99gho-0bKV67Pt2s_zT25mWhNcPe0mWG-0mRl9U,23610
122
122
  funboost/function_result_web/static/assets/js/custom.js,sha256=-BDtMX9tRvSFkJr6654cQd4rIYxasI1uA0TGlB8xzZs,1106
123
123
  funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js,sha256=WrXxn5vUpN3PFCNfwWhO7-fPv7wz8KH85mGxPeQwkr4,45483
124
- funboost/function_result_web/static/css/content_page_style.css,sha256=RkeQGf0eCHYQJI40dqxU2HQdILgE7rzxSmna7czm0TM,914
124
+ funboost/function_result_web/static/css/content_page_style.css,sha256=TjgBS-56HVpqC4djtvrJ0bCtttW6GOVuZs5TIDm5sdo,920
125
125
  funboost/function_result_web/static/css/style.css,sha256=780a8qm6IrrbawetpIGDp3l8BUoSQvD1R86_BGAhhbU,11065
126
126
  funboost/function_result_web/static/images/bg.jpg,sha256=qOk3I6ElZHnigPWaIk_Qq_SCNAdi8N5OI_hdNiIhNXQ,1153168
127
127
  funboost/function_result_web/static/images/favicon.ico,sha256=aK1YtySvT3_WmgY79Ln_JM7NQQY29duYLfKtZJml3Go,4286
@@ -140,9 +140,9 @@ funboost/function_result_web/templates/index.html,sha256=n8imTzS3gdvhWhhUjXGSEgt
140
140
  funboost/function_result_web/templates/index_backup.html,sha256=0sxuOP7_spupjsYe9YtGpYcBa5jz26NMWO0hjuGu5Uo,19969
141
141
  funboost/function_result_web/templates/index_不可折叠.html,sha256=akzwfqVDqn1I4Y1DwkDoovnMRU7GbZKoSnwbiijKV2k,4828
142
142
  funboost/function_result_web/templates/login.html,sha256=q37dj7O0LeyiV38Zd5P1Qn_qmhjdFomuYTRY1Yk48Bo,2007
143
- funboost/function_result_web/templates/queue_op.html,sha256=xh1NYE04h9wktpJBr6en4hG26BBw50v7KfVreBiCfgQ,24008
144
- funboost/function_result_web/templates/running_consumer_by_ip.html,sha256=qeG_Fe8xIitPn3k_cS24eYQNJ1lc4AtHxPXkcna8PPQ,9830
145
- funboost/function_result_web/templates/running_consumer_by_queue_name.html,sha256=d3LE7EWzz2LcJ0I6-Wi2iPNZG65tkQekB5jPJ9DQOY8,9799
143
+ funboost/function_result_web/templates/queue_op.html,sha256=_MMbFraiUYvKX2r4huihzTuWdMXZNjzBv3fVeuqrsfQ,25133
144
+ funboost/function_result_web/templates/running_consumer_by_ip.html,sha256=vcAjwdScEaaBl41urQ4dQSXmU8n6vTgkr8GfF8L5YhA,10078
145
+ funboost/function_result_web/templates/running_consumer_by_queue_name.html,sha256=Gm1XG2Ala1cSpYWBY8zZcu4rqJ7A-JOpHY-z4iaLUVg,10131
146
146
  funboost/publishers/__init__.py,sha256=xqBHlvsJQVPfbdvP84G0LHmVB7-pFBS7vDnX1Uo9pVY,131
147
147
  funboost/publishers/base_publisher.py,sha256=3KAdvkHidkM_qTmNhZlZ_e8a73rsdObZZ5ofNceKkg8,17998
148
148
  funboost/publishers/celery_publisher.py,sha256=uc9N1uLW74skUCw8dsnvxORM2O3cy4SiI7tUZRmvkHA,2336
@@ -301,9 +301,9 @@ funboost/utils/pysnooper_ydf/utils.py,sha256=evSmGi_Oul7vSP47AJ0DLjFwoCYCfunJZ1m
301
301
  funboost/utils/pysnooper_ydf/variables.py,sha256=QejRDESBA06KG9OH4sBT4J1M55eaU29EIHg8K_igaXo,3693
302
302
  funboost/utils/times/__init__.py,sha256=Y4bQD3SIA_E7W2YvHq2Qdi0dGM4H2DxyFNdDOuFOq1w,2417
303
303
  funboost/utils/times/version.py,sha256=11XfnZVVzOgIhXXdeN_mYfdXThfrsbQHpA0wCjz-hpg,17
304
- funboost-48.1.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
305
- funboost-48.1.dist-info/METADATA,sha256=VI72HM47GwSjXyPX4TFZRHIzaePKp6Ncuu4Q7NAOIOA,33628
306
- funboost-48.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
307
- funboost-48.1.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
308
- funboost-48.1.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
309
- funboost-48.1.dist-info/RECORD,,
304
+ funboost-48.2.dist-info/LICENSE,sha256=9EPP2ktG_lAPB8PjmWV-c9BiaJHc_FP6pPLcUrUwx0E,11562
305
+ funboost-48.2.dist-info/METADATA,sha256=hsxjKTRwad6O1rmzIqMDvjY4xj-s7kmYw7fSQt5xSPE,33628
306
+ funboost-48.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
307
+ funboost-48.2.dist-info/entry_points.txt,sha256=yMSSAGRzRAAhGyNNQHw24MooKlDZsaJ499_D6fPl58A,96
308
+ funboost-48.2.dist-info/top_level.txt,sha256=K8WuKnS6MRcEWxP1NvbmCeujJq6TEfbsB150YROlRw0,9
309
+ funboost-48.2.dist-info/RECORD,,