Пример простейшего консольного чата на gRPC и Python.
- Python 3.7+
pip install -r requirements.txt
compile_proto.bat
python -m server
python -m client
В PyCharm доступны Start Server
и Start Client
конфгурации запуска (можно запускать множество клиентов параллельно).
Для компиляции Proto файлов в Python модули используется модуль grpc_tools.protoc
.
Но для компиляции файлов требуется использовать скрипт compile_proto.bat
. В целом он просто запускает grpc_tools.protoc
, но до этого создаёт структуру папок, аналогичную структуре пакетов в python.
Это требуется для того, чтобы корректно работал импорт в скомпилированных модулях.
Описание проблемы: protocolbuffers/protobuf#1491
Решение из: grpc/grpc#9575 (comment)
Генерируется два файла.
- Оканчивающийся на
_pb2.py
: модуль с описанием типов и сервиса; - Оканчивающийся на
_pb2_grpc.py
: модуль, реализующий gRPC.
pb2 - сокращение от ProtoBuf v.2.
- gRPC: https://grpc.io/docs/guides/concepts/
- gRPC туториал для Python: https://grpc.io/docs/tutorials/basic/python/
- Примеры на Python: https://github.com/grpc/grpc/tree/master/examples/python
- Полный API библиотеки grpcio для Python: https://grpc.github.io/grpc/python/
- GUI приложение для тестирования gRPC сервера: https://github.com/uw-labs/bloomrpc
- Добавить простую авторизацию (метод "регистрации");
- Добавить в чат сообщения вида "Клиент подключился", "Клиент отключился".