aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples/python
diff options
context:
space:
mode:
authorGravatar Nathaniel Manista <nathaniel@google.com>2015-10-07 14:34:08 +0000
committerGravatar Nathaniel Manista <nathaniel@google.com>2015-10-07 14:47:55 +0000
commit4e7ea93614ba22180ae6b7b840cfec8547c9c2a8 (patch)
tree259bbb4209d238e57bb403c2e059da3c3ecc0aaa /examples/python
parent1331bf3828c725e72bb4e8672ab950160fe6b45d (diff)
"gRPC in 3 minutes" for Python
Diffstat (limited to 'examples/python')
-rw-r--r--examples/python/README.md55
-rw-r--r--examples/python/helloworld/helloworld_pb2.py202
2 files changed, 257 insertions, 0 deletions
diff --git a/examples/python/README.md b/examples/python/README.md
new file mode 100644
index 0000000000..7b48c824ba
--- /dev/null
+++ b/examples/python/README.md
@@ -0,0 +1,55 @@
+gRPC in 3 minutes (Python)
+========================
+
+Background
+-------------
+For this sample, we've already generated the server and client stubs from
+[helloworld.proto][] and we'll be using a specific reference platform.
+
+Prerequisites
+-------------
+
+- Debian 8.2 "Jessie" platform with `root` access
+- `git`
+- `python2.7`
+- `pip`
+- Python development headers
+
+Set-up
+-------
+ ```sh
+ $ # install the gRPC Core:
+ $ sudo apt-get install libgrpc-dev
+ $ # install gRPC Python:
+ $ sudo pip install -U grpcio==0.11.0b1
+ $ # Since this "hello, world" example uses protocol buffers:
+ $ sudo pip install -U protobuf==3.0.0a3
+ $ # Clone the repository to get the example code:
+ $ git clone https://github.com/grpc/grpc
+ $ # Navigate to the "hello, world" Python example:
+ $ cd grpc/examples/python/helloworld
+ ```
+
+Try it!
+-------
+
+- Run the server
+
+ ```sh
+ $ python2.7 greeter_server.py &
+ ```
+
+- Run the client
+
+ ```sh
+ $ python2.7 greeter_client.py
+ ```
+
+Tutorial
+--------
+
+You can find a more detailed tutorial in [gRPC Basics: Python][]
+
+[helloworld.proto]:../protos/helloworld.proto
+[Install gRPC Python]:../../src/python#installation
+[gRPC Basics: Python]:http://www.grpc.io/docs/tutorials/basic/python.html
diff --git a/examples/python/helloworld/helloworld_pb2.py b/examples/python/helloworld/helloworld_pb2.py
new file mode 100644
index 0000000000..1b2674e4c8
--- /dev/null
+++ b/examples/python/helloworld/helloworld_pb2.py
@@ -0,0 +1,202 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: helloworld.proto
+
+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
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+ name='helloworld.proto',
+ package='helloworld',
+ syntax='proto3',
+ serialized_pb=b'\n\x10helloworld.proto\x12\nhelloworld\"\x1c\n\x0cHelloRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x1d\n\nHelloReply\x12\x0f\n\x07message\x18\x01 \x01(\t2I\n\x07Greeter\x12>\n\x08SayHello\x12\x18.helloworld.HelloRequest\x1a\x16.helloworld.HelloReply\"\x00\x42\x18\n\x10io.grpc.examples\xa2\x02\x03HLWb\x06proto3'
+)
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+
+
+
+_HELLOREQUEST = _descriptor.Descriptor(
+ name='HelloRequest',
+ full_name='helloworld.HelloRequest',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='name', full_name='helloworld.HelloRequest.name', 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,
+ options=None),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=32,
+ serialized_end=60,
+)
+
+
+_HELLOREPLY = _descriptor.Descriptor(
+ name='HelloReply',
+ full_name='helloworld.HelloReply',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='message', full_name='helloworld.HelloReply.message', 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,
+ options=None),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=62,
+ serialized_end=91,
+)
+
+DESCRIPTOR.message_types_by_name['HelloRequest'] = _HELLOREQUEST
+DESCRIPTOR.message_types_by_name['HelloReply'] = _HELLOREPLY
+
+HelloRequest = _reflection.GeneratedProtocolMessageType('HelloRequest', (_message.Message,), dict(
+ DESCRIPTOR = _HELLOREQUEST,
+ __module__ = 'helloworld_pb2'
+ # @@protoc_insertion_point(class_scope:helloworld.HelloRequest)
+ ))
+_sym_db.RegisterMessage(HelloRequest)
+
+HelloReply = _reflection.GeneratedProtocolMessageType('HelloReply', (_message.Message,), dict(
+ DESCRIPTOR = _HELLOREPLY,
+ __module__ = 'helloworld_pb2'
+ # @@protoc_insertion_point(class_scope:helloworld.HelloReply)
+ ))
+_sym_db.RegisterMessage(HelloReply)
+
+
+DESCRIPTOR.has_options = True
+DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), b'\n\020io.grpc.examples\242\002\003HLW')
+import abc
+from grpc.beta import implementations as beta_implementations
+from grpc.early_adopter import implementations as early_adopter_implementations
+from grpc.framework.alpha import utilities as alpha_utilities
+from grpc.framework.common import cardinality
+from grpc.framework.interfaces.face import utilities as face_utilities
+class EarlyAdopterGreeterServicer(object):
+ """<fill me in later!>"""
+ __metaclass__ = abc.ABCMeta
+ @abc.abstractmethod
+ def SayHello(self, request, context):
+ raise NotImplementedError()
+class EarlyAdopterGreeterServer(object):
+ """<fill me in later!>"""
+ __metaclass__ = abc.ABCMeta
+ @abc.abstractmethod
+ def start(self):
+ raise NotImplementedError()
+ @abc.abstractmethod
+ def stop(self):
+ raise NotImplementedError()
+class EarlyAdopterGreeterStub(object):
+ """<fill me in later!>"""
+ __metaclass__ = abc.ABCMeta
+ @abc.abstractmethod
+ def SayHello(self, request):
+ raise NotImplementedError()
+ SayHello.async = None
+def early_adopter_create_Greeter_server(servicer, port, private_key=None, certificate_chain=None):
+ import helloworld_pb2
+ import helloworld_pb2
+ method_service_descriptions = {
+ "SayHello": alpha_utilities.unary_unary_service_description(
+ servicer.SayHello,
+ helloworld_pb2.HelloRequest.FromString,
+ helloworld_pb2.HelloReply.SerializeToString,
+ ),
+ }
+ return early_adopter_implementations.server("helloworld.Greeter", method_service_descriptions, port, private_key=private_key, certificate_chain=certificate_chain)
+def early_adopter_create_Greeter_stub(host, port, metadata_transformer=None, secure=False, root_certificates=None, private_key=None, certificate_chain=None, server_host_override=None):
+ import helloworld_pb2
+ import helloworld_pb2
+ method_invocation_descriptions = {
+ "SayHello": alpha_utilities.unary_unary_invocation_description(
+ helloworld_pb2.HelloRequest.SerializeToString,
+ helloworld_pb2.HelloReply.FromString,
+ ),
+ }
+ return early_adopter_implementations.stub("helloworld.Greeter", method_invocation_descriptions, host, port, metadata_transformer=metadata_transformer, secure=secure, root_certificates=root_certificates, private_key=private_key, certificate_chain=certificate_chain, server_host_override=server_host_override)
+
+class BetaGreeterServicer(object):
+ """<fill me in later!>"""
+ __metaclass__ = abc.ABCMeta
+ @abc.abstractmethod
+ def SayHello(self, request, context):
+ raise NotImplementedError()
+
+class BetaGreeterStub(object):
+ """The interface to which stubs will conform."""
+ __metaclass__ = abc.ABCMeta
+ @abc.abstractmethod
+ def SayHello(self, request, timeout):
+ raise NotImplementedError()
+ SayHello.future = None
+
+def beta_create_Greeter_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
+ import helloworld_pb2
+ import helloworld_pb2
+ request_deserializers = {
+ ('helloworld.Greeter', 'SayHello'): helloworld_pb2.HelloRequest.FromString,
+ }
+ response_serializers = {
+ ('helloworld.Greeter', 'SayHello'): helloworld_pb2.HelloReply.SerializeToString,
+ }
+ method_implementations = {
+ ('helloworld.Greeter', 'SayHello'): face_utilities.unary_unary_inline(servicer.SayHello),
+ }
+ server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
+ return beta_implementations.server(method_implementations, options=server_options)
+
+def beta_create_Greeter_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
+ import helloworld_pb2
+ import helloworld_pb2
+ request_serializers = {
+ ('helloworld.Greeter', 'SayHello'): helloworld_pb2.HelloRequest.SerializeToString,
+ }
+ response_deserializers = {
+ ('helloworld.Greeter', 'SayHello'): helloworld_pb2.HelloReply.FromString,
+ }
+ cardinalities = {
+ 'SayHello': cardinality.Cardinality.UNARY_UNARY,
+ }
+ stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
+ return beta_implementations.dynamic_stub(channel, 'helloworld.Greeter', cardinalities, options=stub_options)
+# @@protoc_insertion_point(module_scope)