发现一个有趣的问题
LeeC20 opened this issue · 3 comments
LeeC20 commented
是这样的
@boost(queue_name=OutsideTopicEum.request,
broker_kind=BrokerEnum.KAFKA_CONFLUENT_SASlPlAIN,
qps=1,
concurrent_num=1,
function_result_status_persistance_conf=f_config)
def get_request(cmd: str, task_id: str, request: dict, time_stamp: str, send_times: int):
这是一个 boost类
var = {
"cmd": "requests",
"task_id": "666",
"request": {
"ply_file": {"fileId": "xxx"},
"json_file": {"fileId": "xxx"}
},
"time_stamp": "",
"send_times": 1,
}
for i in range(5):
var['task_id'] = f"{var['task_id']}{i}"
get_request.publish(var, task_id=var['task_id'])
time.sleep(1)
当我push的内容在循环外的时候
第一次publisher打印的结果, 可以看到extra中的task id 是我设置的task id
base_publisher.py:245" -publish-[print]- msg,, msg, {'cmd': 'requests', 'task_id': '6660', 'request': {'ply_file': {'fileId': 'xxx'}, 'json_file': {'fileId': 'xxx'}}, 'time_stamp': '', 'send_times': 1, 'extra': {'task_id': '6660', 'publish_time': 1701313605.7148, 'publish_time_format': '2023-11-30 11:06:45'}}
但是有趣的来了, 接下来的几次中,extra还是第一次的内容,
-publish-[print]- msg,, msg, {'cmd': 'requests', 'task_id': '666012', 'request': {'ply_file': {'fileId': 'xxx'}, 'json_file': {'fileId': 'xxx'}}, 'time_stamp': '', 'send_times': 1, 'extra': {'task_id': '6660', 'publish_time': 1701313605.7148, 'publish_time_format': '2023-11-30 11:06:45'}}
-publish-[print]- msg,, msg, {'cmd': 'requests', 'task_id': '6660123', 'request': {'ply_file': {'fileId': 'xxx'}, 'json_file': {'fileId': 'xxx'}}, 'time_stamp': '', 'send_times': 1, 'extra': {'task_id': '6660', 'publish_time': 1701313605.7148, 'publish_time_format': '2023-11-30 11:06:45'}}
-publish-[print]- msg,, msg, {'cmd': 'requests', 'task_id': '66601234', 'request': {'ply_file': {'fileId': 'xxx'}, 'json_file': {'fileId': 'xxx'}}, 'time_stamp': '', 'send_times': 1, 'extra': {'task_id': '6660', 'publish_time': 1701313605.7148, 'publish_time_format': '2023-11-30 11:06:45'}}
但是当我改成这样,放入循环内的时候,
for i in range(5):
var = {
"cmd": "requests",
"task_id": "666",
"request": {
"ply_file": {"fileId": "xxx"},
"json_file": {"fileId": "xxx"}
},
"time_stamp": "",
"send_times": 1,
}
var['task_id'] = f"{var['task_id']}{i}"
get_request.publish(var, task_id=var['task_id'])
time.sleep(1)
打印的结果又是对的了
-publish-[print]- msg,, msg, {'cmd': 'requests', 'task_id': '6660', 'request': {'ply_file': {'fileId': 'xxx'}, 'json_file': {'fileId': 'xxx'}}, 'time_stamp': '', 'send_times': 1, 'extra': {'task_id': '6660', 'publish_time': 1701314097.9776, 'publish_time_format': '2023-11-30 11:14:57'}}
-publish-[print]- msg,, msg, {'cmd': 'requests', 'task_id': '6661', 'request': {'ply_file': {'fileId': 'xxx'}, 'json_file': {'fileId': 'xxx'}}, 'time_stamp': '', 'send_times': 1, 'extra': {'task_id': '6661', 'publish_time': 1701314098.9797, 'publish_time_format': '2023-11-30 11:14:58'}}
-publish-[print]- msg,, msg, {'cmd': 'requests', 'task_id': '6662', 'request': {'ply_file': {'fileId': 'xxx'}, 'json_file': {'fileId': 'xxx'}}, 'time_stamp': '', 'send_times': 1, 'extra': {'task_id': '6662', 'publish_time': 1701314099.9914, 'publish_time_format': '2023-11-30 11:14:59'}}
想知道这是因为什么引起的
LeeC20 commented
甚至我只要copy一下, 改下变量名也是可以的
basic_var = {
"cmd": "requests",
"task_id": "1000",
"request": {
"ply_file": {"fileId": "xxx"},
"json_file": {"fileId": "xxx"}
},
"time_stamp": "",
"send_times": 1,
}
for i in range(5):
var = basic_var.copy()
var['task_id'] = f"{var['task_id']}{i}"
get_request.publish(var, task_id=var['task_id'])
time.sleep(1)
ydf0509 commented
可变对象知识,我在30.9版本内部主动copy了,你安装下30.9吧那. 这个问题不神秘,主要是用户要知道什么是可变对象
LeeC20 commented
好, 我更新一下