@@ -503,7 +503,7 @@ def send_message(self, message: JsonRPCMessage) -> None:
503
503
).encode (self .CHARSET )
504
504
505
505
header = (
506
- f"Content-Length: { len (body )} \r \n " f"Content -Type: { self .CONTENT_TYPE } ; charset={ self .CHARSET } \r \n \r \n "
506
+ f"Content-Length: { len (body )} \r \n Content -Type: { self .CONTENT_TYPE } ; charset={ self .CHARSET } \r \n \r \n "
507
507
).encode ("ascii" )
508
508
509
509
self ._message_logger .debug (
@@ -640,30 +640,31 @@ async def handle_request(self, message: JsonRPCRequest) -> None:
640
640
)
641
641
return
642
642
643
- try :
644
- params = self ._convert_params (e .method , e .param_type , message .params )
643
+ params = self ._convert_params (e .method , e .param_type , message .params )
645
644
646
- result = asyncio .create_task (ensure_coroutine (e .method )(* params [0 ], ** params [1 ]))
645
+ result = asyncio .create_task (ensure_coroutine (e .method )(* params [0 ], ** params [1 ]), name = message . method )
647
646
648
- with self ._received_request_lock :
649
- self ._received_request [message .id ] = ReceivedRequestEntry (result , message )
647
+ with self ._received_request_lock :
648
+ self ._received_request [message .id ] = ReceivedRequestEntry (result , message )
650
649
650
+ def done (t : asyncio .Task [Any ]) -> None :
651
651
try :
652
- self .send_response (message .id , await result )
652
+ self .send_response (message .id , t .result ())
653
+ except asyncio .CancelledError :
654
+ self ._logger .info (f"request message { repr (message )} canceled" )
655
+ except (SystemExit , KeyboardInterrupt ):
656
+ raise
657
+ except JsonRPCErrorException as ex :
658
+ self ._logger .exception (ex )
659
+ self .send_error (ex .code , ex .message , id = message .id , data = ex .data )
660
+ except BaseException as e :
661
+ self ._logger .exception (e )
662
+ self .send_error (JsonRPCErrors .INTERNAL_ERROR , f"{ type (e ).__name__ } : { e } " , id = message .id )
653
663
finally :
654
664
with self ._received_request_lock :
655
665
self ._received_request .pop (message .id , None )
656
666
657
- except asyncio .CancelledError :
658
- self ._logger .info (f"request message { repr (message )} canceled" )
659
- except (SystemExit , KeyboardInterrupt ):
660
- raise
661
- except JsonRPCErrorException as ex :
662
- self ._logger .exception (ex )
663
- self .send_error (ex .code , ex .message , id = message .id , data = ex .data )
664
- except BaseException as e :
665
- self ._logger .exception (e )
666
- self .send_error (JsonRPCErrors .INTERNAL_ERROR , f"{ type (e ).__name__ } : { e } " , id = message .id )
667
+ result .add_done_callback (done )
667
668
668
669
async def cancel_request (self , id : Union [int , str , None ]) -> None :
669
670
with self ._received_request_lock :
@@ -687,7 +688,8 @@ async def handle_notification(self, message: JsonRPCNotification) -> None:
687
688
params = self ._convert_params (e .method , e .param_type , message .params )
688
689
result = e .method (* params [0 ], ** params [1 ])
689
690
if inspect .isawaitable (result ):
690
- await result
691
+ asyncio .create_task (result )
692
+
691
693
except asyncio .CancelledError :
692
694
pass
693
695
except (SystemExit , KeyboardInterrupt ):
0 commit comments