if name == ‘main’:
# manager = Manager()
# kill_now = manager.Value(“i”, 0)
# semaphore = manager.BoundedSemaphore(2)
# # 优雅下线
# running_tasks = manager.list([])
# killer = GracefulOffline(kill_now, running_tasks)
# obs_path_queue = TaskBaseInfoBlockedQueue(maxsize=OBS_QUEUE_LEN)
# file_path_queue = DownloadEventPkgBlockedQueue(maxsize=FILE_QUEUE_LEN)
# upload_msgs_queue = UploadMsgInfoBlockedQueue(maxsize=FINISH_QUEUE_LEN)
# kafka_msgs_queue = KafkaMsgsBlockedQueue(maxsize=KAFKA_QUEUE_LEN)
# # 开启常驻进程
# stages = run_state()
# init_task = InitTaskWorker(output_q=obs_path_queue)
# task = None
# while True:
# try:
# if killer.kill_now.get():
# logger.info(“offline begin, exit the main loop”)
# break
# task = init_task.get_data()
# if task:
# element = init_task.parse(task)
# killer.running_tasks.append((task.ids, task.data_name, task.assign_time))
# # 这里的timeout和定时任务中check_light_alive的时长一致
# init_task.put_res(element, timeout=constants.TIME_OUT_SEC)
# except queue.Full:
# logger.error(f"obs_path_queue full")
# time.sleep(10)
# except Exception as err:
# if task is not None and (task.ids, task.data_name, task.assign_time) in killer.running_tasks:
# killer.running_tasks.remove((task.ids, task.data_name, task.assign_time))
# logger.error(f"Exception occurred in MainThread: {err.class.name}, {traceback.format_exc()}")
# time.sleep(10)
# sys.exit(0)
manager = Manager()
kill_now = manager.Value(“i”, 0)
semaphore = manager.BoundedSemaphore(2)
# 优雅下线
running_tasks = manager.list([])
killer = GracefulOffline(kill_now, running_tasks)
obs_path_queue = TaskBaseInfoBlockedQueue(maxsize=OBS_QUEUE_LEN)
file_path_queue = DownloadEventPkgBlockedQueue(maxsize=FILE_QUEUE_LEN)
upload_msgs_queue = UploadMsgInfoBlockedQueue(maxsize=FINISH_QUEUE_LEN)
kafka_msgs_queue = KafkaMsgsBlockedQueue(maxsize=KAFKA_QUEUE_LEN)
# 开启常驻进程
stages = run_state()
init_task = InitTaskWorker(output_q=obs_path_queue)
task = ParseTask()
task.msg = json.dumps([
“{"dataName": "13001_ddi-application-735823413343428882-0-A", "featureType": 1, "groupId": 312, "projectId": 10000, "eventId": 13001, "eventType": 0, "uploadStartTime": 1753251021000, "uploadEndTime": 1753251069120, "uploadCostTime": 48120, "fileSize": 94207887, "verifyCode": null, "moveStartTime": 1753251069271, "moveEndTime": 1753251069271, "decodeStartTime": 1753251069271, "decodeEndTime": 1753251072380, "status": 2, "errorMsg": null, "filePath": "/ddi-sbeta2-20220210/lite/13001_ddi-application-735823413343428882-0-A.tar", "eventTime": 1753250964000, "transactionNumber": "0b3c8433-4e42-4998-9cda-0a73caafe817", "oceanFileId": "1300120250723060924a173318537b66d2eaf66494207887", "oceanFileName": "C_A_13001_2025_07_23_06_09_24_0.bin", "mdcId": "99554920", "userId": "huawei", "mid": "2dc1ee5f35104ad6aa00e1443710f61e", "vid": "15b98468f1644fe8a38a8cc547fd96e3", "vehicleName": "X4-PPV-EVR-065", "mdcSn": "HX24B0016943", "groupName": "bjev_stelato\u8f66\u4f01x4_evr\u8f66\u578b\u5546\u7528\u7ec4", "mdcUsage": 1, "calibrationStatus": "002", "calibrationFileName": "41063a086b105ce9c67ec825cc9289209a5e20895bcd85c9.tar.gz", "calibrationObsPath": "/ddi/calibration/ba3a1c95a95d405f8a385106f45be9b0/41063a086b105ce9c67ec825cc9289209a5e20895bcd85c9.tar.gz", "saveMode": "1000", "saveModeKey": "C_13001_2025_07_23_06_09_24", "uuid": "-1", "vehicleAssociated": 1, "isSecurity": 0, "privacyId": "99554920", "checkKafkaStatus": 0, "dataPull": 0, "commercialDelivered": 0, "license": 0, "moveKafkaSendTime": "1753251069120", "oemModel": "x4_evr", "oemBrand": "bjev_stelato", "sensorVersion": "3.74", "eventSource": "10", "processType": "4", "packageExtraData": "{\"mdcType\":\"MDC620Pro\",\"dieId\":\"d2eaf6640180ea1d198ab66574a5090a7e003e5b\",\"boardType\":\"MDC620ProDebug2212\",\"vehicleClusterList\":[\"beiqi\"]}", "basicAuth": "1", "parentDataName": "13001_ddi-application-735823413343428882-0-A", "eventCategory": "1"}”])
element = init_task.parse(task)
killer.running_tasks.append((task.ids, task.data_name, task.assign_time))
init_task.put_res(element, timeout=constants.TIME_OUT_SEC)
time.sleep(100)这段代码在window解释器下正常在Linux解释器上出现SIGSEGV这个是什么问题TaskBaseInfoBlockedQueue继承multiprocessing中queueif name == ‘main’:
# manager = Manager()
# kill_now = manager.Value(“i”, 0)
# semaphore = manager.BoundedSemaphore(2)
# # 优雅下线
# running_tasks = manager.list([])
# killer = GracefulOffline(kill_now, running_tasks)
# obs_path_queue = TaskBaseInfoBlockedQueue(maxsize=OBS_QUEUE_LEN)
# file_path_queue = DownloadEventPkgBlockedQueue(maxsize=FILE_QUEUE_LEN)
# upload_msgs_queue = UploadMsgInfoBlockedQueue(maxsize=FINISH_QUEUE_LEN)
# kafka_msgs_queue = KafkaMsgsBlockedQueue(maxsize=KAFKA_QUEUE_LEN)
# # 开启常驻进程
# stages = run_state()
# init_task = InitTaskWorker(output_q=obs_path_queue)
# task = None
# while True:
# try:
# if killer.kill_now.get():
# logger.info(“offline begin, exit the main loop”)
# break
# task = init_task.get_data()
# if task:
# element = init_task.parse(task)
# killer.running_tasks.append((task.ids, task.data_name, task.assign_time))
# # 这里的timeout和定时任务中check_light_alive的时长一致
# init_task.put_res(element, timeout=constants.TIME_OUT_SEC)
# except queue.Full:
# logger.error(f"obs_path_queue full")
# time.sleep(10)
# except Exception as err:
# if task is not None and (task.ids, task.data_name, task.assign_time) in killer.running_tasks:
# killer.running_tasks.remove((task.ids, task.data_name, task.assign_time))
# logger.error(f"Exception occurred in MainThread: {err.class.name}, {traceback.format_exc()}")
# time.sleep(10)
# sys.exit(0)
manager = Manager()
kill_now = manager.Value(“i”, 0)
semaphore = manager.BoundedSemaphore(2)
# 优雅下线
running_tasks = manager.list([])
killer = GracefulOffline(kill_now, running_tasks)
obs_path_queue = TaskBaseInfoBlockedQueue(maxsize=OBS_QUEUE_LEN)
file_path_queue = DownloadEventPkgBlockedQueue(maxsize=FILE_QUEUE_LEN)
upload_msgs_queue = UploadMsgInfoBlockedQueue(maxsize=FINISH_QUEUE_LEN)
kafka_msgs_queue = KafkaMsgsBlockedQueue(maxsize=KAFKA_QUEUE_LEN)
# 开启常驻进程
stages = run_state()
init_task = InitTaskWorker(output_q=obs_path_queue)
task = ParseTask()
task.msg = json.dumps([
“{"dataName": "13001_ddi-application-735823413343428882-0-A", "featureType": 1, "groupId": 312, "projectId": 10000, "eventId": 13001, "eventType": 0, "uploadStartTime": 1753251021000, "uploadEndTime": 1753251069120, "uploadCostTime": 48120, "fileSize": 94207887, "verifyCode": null, "moveStartTime": 1753251069271, "moveEndTime": 1753251069271, "decodeStartTime": 1753251069271, "decodeEndTime": 1753251072380, "status": 2, "errorMsg": null, "filePath": "/ddi-sbeta2-20220210/lite/13001_ddi-application-735823413343428882-0-A.tar", "eventTime": 1753250964000, "transactionNumber": "0b3c8433-4e42-4998-9cda-0a73caafe817", "oceanFileId": "1300120250723060924a173318537b66d2eaf66494207887", "oceanFileName": "C_A_13001_2025_07_23_06_09_24_0.bin", "mdcId": "99554920", "userId": "huawei", "mid": "2dc1ee5f35104ad6aa00e1443710f61e", "vid": "15b98468f1644fe8a38a8cc547fd96e3", "vehicleName": "X4-PPV-EVR-065", "mdcSn": "HX24B0016943", "groupName": "bjev_stelato\u8f66\u4f01x4_evr\u8f66\u578b\u5546\u7528\u7ec4", "mdcUsage": 1, "calibrationStatus": "002", "calibrationFileName": "41063a086b105ce9c67ec825cc9289209a5e20895bcd85c9.tar.gz", "calibrationObsPath": "/ddi/calibration/ba3a1c95a95d405f8a385106f45be9b0/41063a086b105ce9c67ec825cc9289209a5e20895bcd85c9.tar.gz", "saveMode": "1000", "saveModeKey": "C_13001_2025_07_23_06_09_24", "uuid": "-1", "vehicleAssociated": 1, "isSecurity": 0, "privacyId": "99554920", "checkKafkaStatus": 0, "dataPull": 0, "commercialDelivered": 0, "license": 0, "moveKafkaSendTime": "1753251069120", "oemModel": "x4_evr", "oemBrand": "bjev_stelato", "sensorVersion": "3.74", "eventSource": "10", "processType": "4", "packageExtraData": "{\"mdcType\":\"MDC620Pro\",\"dieId\":\"d2eaf6640180ea1d198ab66574a5090a7e003e5b\",\"boardType\":\"MDC620ProDebug2212\",\"vehicleClusterList\":[\"beiqi\"]}", "basicAuth": "1", "parentDataName": "13001_ddi-application-735823413343428882-0-A", "eventCategory": "1"}”])
element = init_task.parse(task)
killer.running_tasks.append((task.ids, task.data_name, task.assign_time))
init_task.put_res(element, timeout=constants.TIME_OUT_SEC)
time.sleep(100)这段代码在window解释器下正常在Linux解释器上出现SIGSEGV这个是什么问题TaskBaseInfoBlockedQueue继承multiprocessing中queue进程的启动方式是forkserver
最新发布