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 +1 -1
- funboost/consumers/base_consumer.py +20 -12
- funboost/core/active_cousumer_info_getter.py +29 -9
- funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- funboost/function_result_web/static/css/content_page_style.css +1 -1
- funboost/function_result_web/templates/queue_op.html +23 -12
- funboost/function_result_web/templates/running_consumer_by_ip.html +4 -5
- funboost/function_result_web/templates/running_consumer_by_queue_name.html +5 -1
- {funboost-48.1.dist-info → funboost-48.2.dist-info}/METADATA +1 -1
- {funboost-48.1.dist-info → funboost-48.2.dist-info}/RECORD +14 -14
- {funboost-48.1.dist-info → funboost-48.2.dist-info}/LICENSE +0 -0
- {funboost-48.1.dist-info → funboost-48.2.dist-info}/WHEEL +0 -0
- {funboost-48.1.dist-info → funboost-48.2.dist-info}/entry_points.txt +0 -0
- {funboost-48.1.dist-info → funboost-48.2.dist-info}/top_level.txt +0 -0
funboost/__init__.py
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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.
|
|
1155
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
|
|
Binary file
|
|
@@ -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: "
|
|
61
|
-
responsiveLayout:
|
|
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",
|
|
81
|
-
{ title: "broker<br>类型", field: "broker_kind", sorter: "string"
|
|
82
|
-
{ title: "
|
|
83
|
-
{ title: "
|
|
84
|
-
|
|
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: "
|
|
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:
|
|
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">×</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"
|
|
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"
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
144
|
-
funboost/function_result_web/templates/running_consumer_by_ip.html,sha256=
|
|
145
|
-
funboost/function_result_web/templates/running_consumer_by_queue_name.html,sha256=
|
|
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.
|
|
305
|
-
funboost-48.
|
|
306
|
-
funboost-48.
|
|
307
|
-
funboost-48.
|
|
308
|
-
funboost-48.
|
|
309
|
-
funboost-48.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|