Как очистить ThreadPoolExecutor на сервере gRPC?

При создании экземпляра сервера grpc

server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))

ThreadPoolExecutor.shutdown не вызывается server.stop() в grpc 1.25.x.

Интересно, разработчику приходится выключаться вручную или ThreadPoolExecutor что-то выключает (?).

Что такое метод отсрочки для остановки сервера grpc и ThreadPoolExecutor?


person yakkle    schedule 15.05.2020    source источник


Ответы (1)


Ты прав. gRPC не отключает ThreadPoolExecutors, предоставленные серверам. Это ответственность пользователя. Вы можете, например, использовать предоставленный пул потоков для своей работы, а также для обработчиков методов gRPC, поэтому библиотека выйдет за свои границы, чтобы сделать это за вас.

Конечно, вы не хотите закрывать свой пул потоков, пока не выключите сервер, который его использует. Для этой цели вам нужно использовать Server.stop метод.

person Richard Belleville    schedule 20.05.2020