@@ -47,24 +47,30 @@ def _init_get_token_id_to_token_str(self):
4747 return
4848
4949 def _add_new_group_req_index (self , recv_obj : GroupReqIndexes ):
50+ from lightllm .server .core .objs import FinishStatus
51+
5052 for req_index in recv_obj .shm_req_indexes :
5153 req = self .shm_req_manager .get_req_obj_by_index (req_index )
52- req .link_prompt_ids_shm_array ()
53- req .link_logprobs_shm_array ()
54-
55- logger .debug (
56- f"detokenization recv req id { req .request_id } " f"cost time { time .time () - recv_obj .time_mark } s"
57- )
58-
59- # p d 分离模式,decode节点的解码需要做一些特殊的修复。
60- decode_req = DecodeReq (req , self .is_pd_decode_mode )
61- if self .is_pd_decode_mode :
62- decode_req = decode_mode_fix (decode_req , self .tokenizer , self .eos_id )
63- # token_healing mode 的特殊初始化
64- if self .args .token_healing_mode :
65- decode_req .init_token_healing_prefix_str (self .token_id_to_token , self .tokenizer )
66-
67- self .req_id_to_out [req .request_id ] = decode_req
54+ try :
55+ req .link_prompt_ids_shm_array ()
56+ req .link_logprobs_shm_array ()
57+
58+ logger .debug (
59+ f"detokenization recv req id { req .request_id } " f"cost time { time .time () - recv_obj .time_mark } s"
60+ )
61+
62+ # p d 分离模式,decode节点的解码需要做一些特殊的修复。
63+ decode_req = DecodeReq (req , self .is_pd_decode_mode )
64+ if self .is_pd_decode_mode :
65+ decode_req = decode_mode_fix (decode_req , self .tokenizer , self .eos_id )
66+ # token_healing mode 的特殊初始化
67+ if self .args .token_healing_mode :
68+ decode_req .init_token_healing_prefix_str (self .token_id_to_token , self .tokenizer )
69+
70+ self .req_id_to_out [req .request_id ] = decode_req
71+ except Exception as e :
72+ req .finish_status .set_status (FinishStatus .FINISHED_ERROR )
73+ raise e
6874 return
6975
7076 def handle_loop (self ):
@@ -79,9 +85,8 @@ def handle_loop(self):
7985 try :
8086 self ._add_new_group_req_index (recv_obj = recv_obj )
8187 except Exception :
82- # TODO: publish an ERROR finish_status back to httpserver so the
83- # client gets a 500 instead of hanging until disconnect.
8488 logger .exception ("add new group req index has exception" )
89+ self .pub_to_httpserver .send_pyobj (None , protocol = pickle .HIGHEST_PROTOCOL )
8590
8691 # 当队列中存在较多的请求时,将一次接受的数量上调
8792 recv_max_count = min (int (recv_max_count * 1.3 ), 256 )
0 commit comments