Мой 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 (он длинный). Как я могу назвать мой метод создания? потому что я привожу правильные аргументы (я думаю), кто-то может мне это объяснить?