gRPC не сбрасывает отключенный канал - PullRequest
0 голосов
/ 15 апреля 2019

Шаги для воспроизведения

  1. Запустить сервер
  2. Отправить клиентский RPC на сервер
  3. Перезагрузите сервер
  4. Используя тот же клиент, отправьте другой RPC. Вызов не удастся
  5. Отправьте еще один RPC, этот вызов будет успешным

Также я обнаружил, что если сервер оставлен на длительное время остановленным перед повторным запуском, вызов на шаге 5 также вернет «канал находится в состоянии TRANSIENT_FAILURE».

Пример кода: https://github.com/whs/grpc-repro (Установите из файла needs.txt, затем запустите main.py)

Ожидаемый результат

Все звонки должны быть успешными.

Протестировано с Python grpcio == 1.19.0 сервер / клиент и с сервером go-grpc. Я попытался установить grpc.max_connection_age_grace_ms, grpc.max_connection_age_ms, grpc.max_connection_idle_ms, grpc.keepalive_time_ms, grpc.keepalive_permit_without_calls, но, похоже, это не помогает.

1 Ответ

1 голос
/ 17 апреля 2019

Вопрос дублируется с https://groups.google.com/forum/#!msg/grpc-io/199V_iF0NMw/NahHz_vMBwAJ.


Возможно, вам нужна функция " wait_for_ready ".В случае TRANSIENT_FAILURE (сервер временно недоступен) он автоматически будет ждать, пока канал снова не будет ГОТОВ, без сбоев. Подробнее об ожидании готовности.

...