при использовании сервера python grpc,
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
- это общий способ создания сервера grpc.Но при этом запуске, если я пытаюсь запустить более 10 экземпляров клиента, который ожидает потоковую передачу с сервера, одиннадцатый не работает (я запускаю 10 экземпляров клиента, который подключается к этому серверу и получает поток)
Это нормальное поведение?Поскольку, даже если я изменяю max_workers на None, он создает не более 40 потоков (8 ядер x 5 в соответствии с документацией), поэтому в этом случае можно одновременно обслуживать до 40 клиентов.
Даже если я изменю max_workers на NoneМаксимальное количество создаваемых файлов составляет 40 потоков (8 ядер x 5 согласно документации), поэтому в этом случае можно одновременно обслуживать до 40 клиентов.Это нормальное поведение?
Я работал над своим кодом, но попытался с общим кодом python grpc, описанным здесь:
https://grpc.io/docs/tutorials/basic/python.html
Я могу воспроизвести то же самоепроблема с этим.
Чтобы воспроизвести его, просто запустите route_guide_server.py в одном окне с max_workers = 4, а затем попробуйте запустить 4-5 разных клиентов в разных окнах.Четвертому клиенту придется подождать, пока один из клиентов не будет завершен. (Для лучшего обзора добавьте time.sleep в доходность)
Если большое количество клиентов (100 и 1000 клиентов)) хотите получить доступ к серверу grpc в python с потоковой передачей (которая должна быть непрерывной), тогда клиенты больше никогда не получат шанс.