Я хотел реализовать логи повторных попыток c с перехватчиками в python для клиентов grp c.
, если мы хотим реализовать это для асинхронных c вызовов grp c, это становится немного хитрее. мы знаем, что можем получить вызов asyn c grp c, подобный следующему:
future_response = stub.SayHello.future(SayHelloRequest())
, поэтому, если я хочу реализовать повторную логику c, мне нужно проверить, было ли в будущем исключение или нет:
future_response.exception()
На самом деле мы не можем этого сделать, поскольку он блокируется до тех пор, пока не придет ответ. Поэтому нам нужно использовать add_done_callback
метод возвращенного будущего. так что для этого мне нужен способ обернуть возвращённое будущее вызовом grp c, но я не знаю ни одного безопасного способа сделать это. тип объекта, возвращаемого вызовом asyn c grp c, равен _Rendezvous
, мне нужно обернуть этот объект другим _Rendezvous
будущим, чтобы я мог вызвать set_result
для этого вручную в обратном вызове основного будущего. но я не смог найти правильный способ или любую вспомогательную функцию в кодах grp c, чтобы позволить мне сделать это.