1
0
Fork 0
mirror of https://github.com/EDeev/api_processor.git synced 2026-10-07 20:49:34 +03:00
api_processor/api_app/grpc_client/client.py
Egor Deev c16287063c gRPC: клиент работает с настоящим сервером
Путь к сгенерированным модулям считался на уровень выше репозитория, импорт всегда падал, и
вместо gRPC работала заглушка с поддельным success: true. Путь исправлен, заглушка убрана;
адрес и таймаут — GRPC_SERVER и GRPC_TIMEOUT (пусто — шаг пропускается), недоступный
сервер даёт success: false. proto/*_pb2*.py пересобраны под актуальный protobuf.
2026-10-06 00:38:57 +00:00

38 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import logging
import os
import sys
import grpc
from django.conf import settings
# сгенерированные модули лежат в proto/ в корне репозитория (раньше путь считался на уровень
# выше репозитория — импорт всегда падал, и вместо настоящего gRPC работала заглушка
# с поддельным success: true)
PROTO_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "proto")
if PROTO_DIR not in sys.path:
sys.path.append(PROTO_DIR)
import text_service_pb2 # noqa: E402
import text_service_pb2_grpc # noqa: E402
logger = logging.getLogger(__name__)
def send_to_grpc_server(text: str):
"""Отправляет текст на gRPC-сервер TextProcessor. Если адрес сервера не задан
(GRPC_SERVER пустой), шаг пропускается и возвращается None"""
if not settings.GRPC_SERVER:
return None
try:
with grpc.insecure_channel(settings.GRPC_SERVER) as channel:
stub = text_service_pb2_grpc.TextProcessorStub(channel)
response = stub.ProcessText(text_service_pb2.TextRequest(text=text), timeout=settings.GRPC_TIMEOUT)
return {
'processed_text': response.processed_text,
'success': response.success,
'error': response.error or None,
}
except grpc.RpcError as e:
logger.warning("gRPC-сервер %s недоступен: %s", settings.GRPC_SERVER, e.code())
return {'processed_text': None, 'success': False, 'error': f"gRPC: {e.code().name}"}