#python #grpc
#python #grpc
Вопрос:
Я написал простой скрипт на python с использованием grpc, позволяющий взаимодействовать двум процессам на localhost. Теперь я хочу объединить два процесса, запущенных на двух разных компьютерах.
Я пытался изменить порт и IP-адрес сервера, но не работает.
Это мой клиент :
def run():
if len(sys.argv) < 2:
print("Usage : python controller_agent.py <server-ip-address>")
exit(0)
with grpc.insecure_channel('%s:50051' % sys.argv[1]) as channel:
stub = controller_agent_pb2_grpc.AgentServiceStub(channel)
message_in = input('Message : ')
response = stub.EchoMessage(controller_agent_pb2.EchoRequest(message=message_in))
print(response.message)
И это мой сервер :
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
class RouterAgent(controller_agent_pb2_grpc.AgentServiceServicer):
def EchoMessage(self, request, context):
print("Echo : %s" %request.message)
return controller_agent_pb2.EchoReply(message="Echo : %s" % request.message)
def serve():
server = grpc.server(ThreadPoolExecutor(max_workers=10))
controller_agent_pb2_grpc.add_AgentServiceServicer_to_server(RouterAgent(), server)
server.add_insecure_port('[::]:50051')
server.start()
try:
while True:
time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
server.stop(0)
Как я могу изменить код, чтобы скрипт работал не только на localhost?
Это сообщение об ошибке при попытке связи с удаленным хостом
Комментарии:
1. Доступно ли у вас сообщение об ошибке или журнал трассировки? Есть ли на компьютере, на котором запущен ваш сервер, порт, который должен быть открыт gRPC?
2. я добавил сообщение об ошибке.
3. Похоже, проблема с брандмауэром. Я бы убедился, что порт 50051 открыт для входящих TCP-соединений на стороне сервера.
4. Можете ли вы убедиться, что имя хоста, к которому вы подключаетесь, разрешимо? Возможно, с использованием таких инструментов, как nslookup или dig.