Как использовать файл grpc в коде Python? - PullRequest
0 голосов
/ 11 октября 2019

Мой gRPC генерирует для меня два файла: garden_pb2:

# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: garden.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor.FileDescriptor(
  name='garden.proto',
  package='proto',
  syntax='proto3',
  serialized_options=None,
  serialized_pb=_b('\n\x0cgarden.proto\x12\x05proto\"\xbd\x02\n\x06Garden\x12\n\n\x02id\x18\x01 \x01(\t\x12(\n\x08position\x18\x02 \x01(\x0b\x32\x16.proto.Garden.Position\x12 \n\x04size\x18\x03 \x01(\x0b\x32\x12.proto.Garden.Size\x12&\n\x06garden\x18\x04 \x03(\x0b\x32\x16.proto.Garden.CaseLine\x12\x0e\n\x06userID\x18\x05 \x01(\t\x1a$\n\x08Position\x12\x0b\n\x03lat\x18\x01 \x01(\x02\x12\x0b\n\x03lng\x18\x02 \x01(\x02\x1a%\n\x04Size\x12\x0e\n\x06height\x18\x01 \x01(\x03\x12\r\n\x05width\x18\x02 \x01(\x03\x1a(\n\x04\x43\x61se\x12\x0f\n\x07plantID\x18\x01 \x01(\t\x12\x0f\n\x07shading\x18\x02 \x01(\x02\x1a,\n\x08\x43\x61seLine\x12 \n\x04\x63\x61se\x18\x01 \x03(\x0b\x32\x12.proto.Garden.Case\".\n\rCreateRequest\x12\x1d\n\x06garden\x18\x01 \x01(\x0b\x32\r.proto.Garden\"\x1c\n\x0e\x43reateResponse\x12\n\n\x02id\x18\x01 \x01(\t\"\x19\n\x0bReadRequest\x12\n\n\x02id\x18\x01 \x01(\t\"-\n\x0cReadResponse\x12\x1d\n\x06garden\x18\x01 \x01(\x0b\x32\r.proto.Garden\".\n\rUpdateRequest\x12\x1d\n\x06garden\x18\x01 \x01(\x0b\x32\r.proto.Garden\"!\n\x0eUpdateResponse\x12\x0f\n\x07updated\x18\x01 \x01(\t\"\x1b\n\rDeleteRequest\x12\n\n\x02id\x18\x01 \x01(\t\"!\n\x0e\x44\x65leteResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\t\"\x10\n\x0eReadAllRequest\"1\n\x0fReadAllResponse\x12\x1e\n\x07gardens\x18\x01 \x03(\x0b\x32\r.proto.Garden2\x9f\x02\n\rGardenService\x12\x35\n\x06\x43reate\x12\x14.proto.CreateRequest\x1a\x15.proto.CreateResponse\x12/\n\x04Read\x12\x12.proto.ReadRequest\x1a\x13.proto.ReadResponse\x12\x35\n\x06Update\x12\x14.proto.UpdateRequest\x1a\x15.proto.UpdateResponse\x12\x35\n\x06\x44\x65lete\x12\x14.proto.DeleteRequest\x1a\x15.proto.DeleteResponse\x12\x38\n\x07ReadAll\x12\x15.proto.ReadAllRequest\x1a\x16.proto.ReadAllResponseb\x06proto3')
)




_GARDEN_POSITION = _descriptor.Descriptor(
  name='Position',
  full_name='proto.Garden.Position',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='lat', full_name='proto.Garden.Position.lat', index=0,
      number=1, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='lng', full_name='proto.Garden.Position.lng', index=1,
      number=2, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=178,
  serialized_end=214,
)

_GARDEN_SIZE = _descriptor.Descriptor(
  name='Size',
  full_name='proto.Garden.Size',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='height', full_name='proto.Garden.Size.height', index=0,
      number=1, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='width', full_name='proto.Garden.Size.width', index=1,
      number=2, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=216,
  serialized_end=253,
)

_GARDEN_CASE = _descriptor.Descriptor(
  name='Case',
  full_name='proto.Garden.Case',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='plantID', full_name='proto.Garden.Case.plantID', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='shading', full_name='proto.Garden.Case.shading', index=1,
      number=2, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=255,
  serialized_end=295,
)

_GARDEN_CASELINE = _descriptor.Descriptor(
  name='CaseLine',
  full_name='proto.Garden.CaseLine',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='case', full_name='proto.Garden.CaseLine.case', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=297,
  serialized_end=341,
)

_GARDEN = _descriptor.Descriptor(
  name='Garden',
  full_name='proto.Garden',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='proto.Garden.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='position', full_name='proto.Garden.position', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='size', full_name='proto.Garden.size', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='garden', full_name='proto.Garden.garden', index=3,
      number=4, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='userID', full_name='proto.Garden.userID', index=4,
      number=5, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[_GARDEN_POSITION, _GARDEN_SIZE, _GARDEN_CASE, _GARDEN_CASELINE, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=24,
  serialized_end=341,
)


_CREATEREQUEST = _descriptor.Descriptor(
  name='CreateRequest',
  full_name='proto.CreateRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='garden', full_name='proto.CreateRequest.garden', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=343,
  serialized_end=389,
)


_CREATERESPONSE = _descriptor.Descriptor(
  name='CreateResponse',
  full_name='proto.CreateResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='proto.CreateResponse.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=391,
  serialized_end=419,
)


_READREQUEST = _descriptor.Descriptor(
  name='ReadRequest',
  full_name='proto.ReadRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='proto.ReadRequest.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=421,
  serialized_end=446,
)


_READRESPONSE = _descriptor.Descriptor(
  name='ReadResponse',
  full_name='proto.ReadResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='garden', full_name='proto.ReadResponse.garden', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=448,
  serialized_end=493,
)


_UPDATEREQUEST = _descriptor.Descriptor(
  name='UpdateRequest',
  full_name='proto.UpdateRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='garden', full_name='proto.UpdateRequest.garden', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=495,
  serialized_end=541,
)


_UPDATERESPONSE = _descriptor.Descriptor(
  name='UpdateResponse',
  full_name='proto.UpdateResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='updated', full_name='proto.UpdateResponse.updated', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=543,
  serialized_end=576,
)


_DELETEREQUEST = _descriptor.Descriptor(
  name='DeleteRequest',
  full_name='proto.DeleteRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='proto.DeleteRequest.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=578,
  serialized_end=605,
)


_DELETERESPONSE = _descriptor.Descriptor(
  name='DeleteResponse',
  full_name='proto.DeleteResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='deleted', full_name='proto.DeleteResponse.deleted', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=607,
  serialized_end=640,
)


_READALLREQUEST = _descriptor.Descriptor(
  name='ReadAllRequest',
  full_name='proto.ReadAllRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=642,
  serialized_end=658,
)


_READALLRESPONSE = _descriptor.Descriptor(
  name='ReadAllResponse',
  full_name='proto.ReadAllResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='gardens', full_name='proto.ReadAllResponse.gardens', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=660,
  serialized_end=709,
)

_GARDEN_POSITION.containing_type = _GARDEN
_GARDEN_SIZE.containing_type = _GARDEN
_GARDEN_CASE.containing_type = _GARDEN
_GARDEN_CASELINE.fields_by_name['case'].message_type = _GARDEN_CASE
_GARDEN_CASELINE.containing_type = _GARDEN
_GARDEN.fields_by_name['position'].message_type = _GARDEN_POSITION
_GARDEN.fields_by_name['size'].message_type = _GARDEN_SIZE
_GARDEN.fields_by_name['garden'].message_type = _GARDEN_CASELINE
_CREATEREQUEST.fields_by_name['garden'].message_type = _GARDEN
_READRESPONSE.fields_by_name['garden'].message_type = _GARDEN
_UPDATEREQUEST.fields_by_name['garden'].message_type = _GARDEN
_READALLRESPONSE.fields_by_name['gardens'].message_type = _GARDEN
DESCRIPTOR.message_types_by_name['Garden'] = _GARDEN
DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
DESCRIPTOR.message_types_by_name['ReadRequest'] = _READREQUEST
DESCRIPTOR.message_types_by_name['ReadResponse'] = _READRESPONSE
DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
DESCRIPTOR.message_types_by_name['UpdateResponse'] = _UPDATERESPONSE
DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
DESCRIPTOR.message_types_by_name['DeleteResponse'] = _DELETERESPONSE
DESCRIPTOR.message_types_by_name['ReadAllRequest'] = _READALLREQUEST
DESCRIPTOR.message_types_by_name['ReadAllResponse'] = _READALLRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

Garden = _reflection.GeneratedProtocolMessageType('Garden', (_message.Message,), {

  'Position' : _reflection.GeneratedProtocolMessageType('Position', (_message.Message,), {
    'DESCRIPTOR' : _GARDEN_POSITION,
    '__module__' : 'garden_pb2'
    # @@protoc_insertion_point(class_scope:proto.Garden.Position)
    })
  ,

  'Size' : _reflection.GeneratedProtocolMessageType('Size', (_message.Message,), {
    'DESCRIPTOR' : _GARDEN_SIZE,
    '__module__' : 'garden_pb2'
    # @@protoc_insertion_point(class_scope:proto.Garden.Size)
    })
  ,

  'Case' : _reflection.GeneratedProtocolMessageType('Case', (_message.Message,), {
    'DESCRIPTOR' : _GARDEN_CASE,
    '__module__' : 'garden_pb2'
    # @@protoc_insertion_point(class_scope:proto.Garden.Case)
    })
  ,

  'CaseLine' : _reflection.GeneratedProtocolMessageType('CaseLine', (_message.Message,), {
    'DESCRIPTOR' : _GARDEN_CASELINE,
    '__module__' : 'garden_pb2'
    # @@protoc_insertion_point(class_scope:proto.Garden.CaseLine)
    })
  ,
  'DESCRIPTOR' : _GARDEN,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.Garden)
  })
_sym_db.RegisterMessage(Garden)
_sym_db.RegisterMessage(Garden.Position)
_sym_db.RegisterMessage(Garden.Size)
_sym_db.RegisterMessage(Garden.Case)
_sym_db.RegisterMessage(Garden.CaseLine)

CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
  'DESCRIPTOR' : _CREATEREQUEST,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.CreateRequest)
  })
_sym_db.RegisterMessage(CreateRequest)

CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
  'DESCRIPTOR' : _CREATERESPONSE,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.CreateResponse)
  })
_sym_db.RegisterMessage(CreateResponse)

ReadRequest = _reflection.GeneratedProtocolMessageType('ReadRequest', (_message.Message,), {
  'DESCRIPTOR' : _READREQUEST,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.ReadRequest)
  })
_sym_db.RegisterMessage(ReadRequest)

ReadResponse = _reflection.GeneratedProtocolMessageType('ReadResponse', (_message.Message,), {
  'DESCRIPTOR' : _READRESPONSE,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.ReadResponse)
  })
_sym_db.RegisterMessage(ReadResponse)

UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
  'DESCRIPTOR' : _UPDATEREQUEST,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.UpdateRequest)
  })
_sym_db.RegisterMessage(UpdateRequest)

UpdateResponse = _reflection.GeneratedProtocolMessageType('UpdateResponse', (_message.Message,), {
  'DESCRIPTOR' : _UPDATERESPONSE,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.UpdateResponse)
  })
_sym_db.RegisterMessage(UpdateResponse)

DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
  'DESCRIPTOR' : _DELETEREQUEST,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.DeleteRequest)
  })
_sym_db.RegisterMessage(DeleteRequest)

DeleteResponse = _reflection.GeneratedProtocolMessageType('DeleteResponse', (_message.Message,), {
  'DESCRIPTOR' : _DELETERESPONSE,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.DeleteResponse)
  })
_sym_db.RegisterMessage(DeleteResponse)

ReadAllRequest = _reflection.GeneratedProtocolMessageType('ReadAllRequest', (_message.Message,), {
  'DESCRIPTOR' : _READALLREQUEST,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.ReadAllRequest)
  })
_sym_db.RegisterMessage(ReadAllRequest)

ReadAllResponse = _reflection.GeneratedProtocolMessageType('ReadAllResponse', (_message.Message,), {
  'DESCRIPTOR' : _READALLRESPONSE,
  '__module__' : 'garden_pb2'
  # @@protoc_insertion_point(class_scope:proto.ReadAllResponse)
  })
_sym_db.RegisterMessage(ReadAllResponse)



_GARDENSERVICE = _descriptor.ServiceDescriptor(
  name='GardenService',
  full_name='proto.GardenService',
  file=DESCRIPTOR,
  index=0,
  serialized_options=None,
  serialized_start=712,
  serialized_end=999,
  methods=[
  _descriptor.MethodDescriptor(
    name='Create',
    full_name='proto.GardenService.Create',
    index=0,
    containing_service=None,
    input_type=_CREATEREQUEST,
    output_type=_CREATERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Read',
    full_name='proto.GardenService.Read',
    index=1,
    containing_service=None,
    input_type=_READREQUEST,
    output_type=_READRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Update',
    full_name='proto.GardenService.Update',
    index=2,
    containing_service=None,
    input_type=_UPDATEREQUEST,
    output_type=_UPDATERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Delete',
    full_name='proto.GardenService.Delete',
    index=3,
    containing_service=None,
    input_type=_DELETEREQUEST,
    output_type=_DELETERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='ReadAll',
    full_name='proto.GardenService.ReadAll',
    index=4,
    containing_service=None,
    input_type=_READALLREQUEST,
    output_type=_READALLRESPONSE,
    serialized_options=None,
  ),
])
_sym_db.RegisterServiceDescriptor(_GARDENSERVICE)

DESCRIPTOR.services_by_name['GardenService'] = _GARDENSERVICE

# @@protoc_insertion_point(module_scope)

, а также garden_pb2_grpc:

# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
import grpc

import garden_pb2 as garden__pb2

class GardenServiceStub(object):
  """Service to manage list of todo tasks
  """

  def __init__(self, channel):
    """Constructor.

    Args:
      channel: A grpc.Channel.
    """
    self.Create = channel.unary_unary(
        '/proto.GardenService/Create',
        request_serializer=garden__pb2.CreateRequest.SerializeToString,
        response_deserializer=garden__pb2.CreateResponse.FromString,
        )
    self.Read = channel.unary_unary(
        '/proto.GardenService/Read',
        request_serializer=garden__pb2.ReadRequest.SerializeToString,
        response_deserializer=garden__pb2.ReadResponse.FromString,
        )
    self.Update = channel.unary_unary(
        '/proto.GardenService/Update',
        request_serializer=garden__pb2.UpdateRequest.SerializeToString,
        response_deserializer=garden__pb2.UpdateResponse.FromString,
        )
    self.Delete = channel.unary_unary(
        '/proto.GardenService/Delete',
        request_serializer=garden__pb2.DeleteRequest.SerializeToString,
        response_deserializer=garden__pb2.DeleteResponse.FromString,
        )
    self.ReadAll = channel.unary_unary(
        '/proto.GardenService/ReadAll',
        request_serializer=garden__pb2.ReadAllRequest.SerializeToString,
        response_deserializer=garden__pb2.ReadAllResponse.FromString,
        )


class GardenServiceServicer(object):
  """Service to manage list of todo tasks
  """

  def Create(self, request, context):
    """Create new todo task
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def Read(self, request, context):
    """Read todo task
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def Update(self, request, context):
    """Update todo task
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def Delete(self, request, context):
    """Delete todo task
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ReadAll(self, request, context):
    """Read all todo tasks
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  generic_handler = grpc.method_handlers_generic_handler(
      'proto.GardenService', rpc_method_handlers)
  server.add_generic_rpc_handlers((generic_handler,))

Я создаю клиента:

# example_consumer.py
import pika, os, time
import grpc
import garden_pb2_grpc
import garden_pb2

# Access the CLODUAMQP_URL environment variable and parse it (fallback to localhost)

url = os.environ.get('CLOUDAMQP_URL', 'amqp://')
params = pika.URLParameters(url)
connection = pika.BlockingConnection(params)
channel = connection.channel()  # start a channel
channel.queue_declare(queue='garden')  # Declare a queue
grpcChannel = grpc.insecure_channel('https://connecttoGOgrpc')  
stub = garden_pb2_grpc.GardenServiceStub(grpcChannel) # i import my grpc

my_garden = garden_pb2.Garden(
    id="1",
    position=garden_pb2.Garden.Position(lat=1, lng=2),
    size=garden_pb2.Garden.Size(height=10, width=20),
    garden=[],
    userID="5d0a61f86e95521de096efb3"
)

createRequest = garden_pb2.CreateRequest(
    garden=my_garden
)


def garden_process_function(msg):
    print("Received " + str(msg))
    print("This function can do something")
    time.sleep(1)  # delays for 5 seconds
   # feature = stub.Create(createRequest)  # here i would like to call the create method
    return;


# create a function which is called on incoming messages
def callback(ch, method, properties, body):
    garden_process_function(body)


class Server(object):
    @staticmethod
    def receiveMsg():
        # set up subscription on the queue
        channel.basic_consume('garden',
                              callback,
                              auto_ack=True)
        # start consuming (blocks)
        channel.start_consuming()
        connection.close()


class App(object):
    @staticmethod
    def run():
        print('Running...')


if __name__ == '__main__':
    App.run()
    Server.receiveMsg()

IЯ хотел бы вызвать метод stub.Create (createRequest), но у меня есть эта ошибка:

grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "DNS resolution failed"
    debug_error_string = "{"created":"@1570752421.144000000","description":"Failed to pick subchannel","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":3876,"referenced_errors":[{"created":"@1570752421.144000000","description":"Resolver transient failure","file":"src/core/ext/filters/client_channel/resolving_lb_policy.cc","file_line":263,"referenced_errors":[{"created":"@1570752421.144000000","description":"DNS resolution failed","file":"src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc","file_line":189,"grpc_status":14,"referenced_errors":[{"created":"@1570752421.144000000","description":"OS Error","file":"src/core/lib/iomgr/resolve_address_windows.cc","file_line":96,"os_error":"The specified class was not found.\r\n","syscall":"getaddrinfo","wsa_error":10109}]}]}]}"
>

Это мой код, сгенерированный grpc (он длинный). Как я могу назвать мой метод создания? потому что я привожу правильные аргументы (я думаю), кто-то может мне это объяснить?

1 Ответ

0 голосов
/ 29 октября 2019

Попробуйте избавиться от префикса https://' в вашем звонке на grpc.insecure_channel. Сама функция определяет протокол, который вы будете использовать. В этом случае открытый текст gRPC. Кроме того, убедитесь, что имя connecttoGOgrpc действительно разрешимо с помощью такого инструмента, как nslookup или dig.

...