Skip to content

Instantly share code, notes, and snippets.

@jaytaylor
Created June 15, 2016 23:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaytaylor/cc3d1a92b41f49ace15dea394f18900d to your computer and use it in GitHub Desktop.
Save jaytaylor/cc3d1a92b41f49ace15dea394f18900d to your computer and use it in GitHub Desktop.

Sure, in fact I first saw this error yesterday after having built off HEAD.

To narrow things down, I devised and ran a simple experiment to determine which versions of things are being troublesome.

Skip to the results

Key

  • venv2 is Python 2.7.11+

  • venv3 is Python 3.5.1+

  • grpc_python_plugin-0.14.1 is grpc v0.14.1

  • grpc_python_plugin-master is grpc HEAD@fa9b7c1bc6488be17d18007f45c57dac39ea5b79 (today is 2016-06-15)

(Note: grpc is always built from source)

Python2 + grpc v0.14.1

root@d732fe4c214d:/# . venv2/bin/activate
(venv2) root@d732fe4c214d:/# protoc --python_out=. --grpc_out=. --plugin=protoc-gen-grpc=$(command -v grpc_python_plugin-0.14.1) *.proto
(venv2) root@d732fe4c214d:/# ./rg_src.py &
[1] 24098
(venv2) root@d732fe4c214d:/# ./rg_cli.py
-------------- GetFeature --------------
Feature called Berkshire Valley Management Area Trail, Jefferson, NJ, USA at latitude: 409146138
longitude: -746188906

Found no feature at
-------------- ListFeatures --------------
Looking for features between 40, -75 and 42, -73
...

Python2 + grpc v0.14.1: OK

Python3 + grpc v0.14.1

root@d732fe4c214d:/# . venv3/bin/activate
(venv3) root@d732fe4c214d:/# protoc --python_out=. --grpc_out=. --plugin=protoc-gen-grpc=$(command -v grpc_python_plugin-0.14.1) *.proto
(venv3) root@d732fe4c214d:/# ./rg_srv.py
(venv3) root@d732fe4c214d:/# ./rg_srv.py &
[1] 24180
(venv3) root@d732fe4c214d:/# ./rg_cli.py
-------------- GetFeature --------------
Traceback (most recent call last):
  File "./rg_cli.py", line 138, in <module>
    run()
  File "./rg_cli.py", line 128, in run
    guide_get_feature(stub)
  File "./rg_cli.py", line 67, in guide_get_feature
    guide_get_one_feature(stub, route_guide_pb2.Point(latitude=409146138, longitude=-746188906))
  File "./rg_cli.py", line 55, in guide_get_one_feature
    feature = stub.GetFeature(point, _TIMEOUT_SECONDS)
  File "/venv3/lib/python3.5/site-packages/grpc/framework/crust/implementations.py", line 75, in __call__
    protocol_options, metadata, request)
  File "/venv3/lib/python3.5/site-packages/grpc/framework/crust/_calls.py", line 109, in blocking_unary_unary
    return next(rendezvous)
  File "/venv3/lib/python3.5/site-packages/grpc/framework/crust/_control.py", line 409, in __next__
    return self.next()
  File "/venv3/lib/python3.5/site-packages/grpc/framework/crust/_control.py", line 415, in next
    raise self._termination.abortion_error
grpc.framework.interfaces.face.face.LocalError: LocalError(code=StatusCode.UNIMPLEMENTED, details="b'Method "b\'GetFeature\'" of service "b\'routeguide.RouteGuide\'" not implemented!'")

Python3 + grpc v0.14.1: BROKEN

Python2 + grpc HEAD@fa9b7c1b

root@d732fe4c214d:/# . venv2/bin/activate
(venve) root@d732fe4c214d:/# protoc --python_out=. --grpc_out=. --plugin=protoc-gen-grpc=$(command -v grpc_python_plugin-master) *.proto
(venv2) root@d732fe4c214d:/# ./rg_srv.py &
[1] 24201
(venve2) root@d732fe4c214d:/# ./rg_cli.py
-------------- GetFeature --------------
Feature called Berkshire Valley Management Area Trail, Jefferson, NJ, USA at latitude: 409146138
longitude: -746188906

Found no feature at
-------------- ListFeatures --------------
Looking for features between 40, -75 and 42, -73
Feature called Patriots Path, Mendham, NJ 07945, USA at latitude: 407838351
longitude: -746143763

Feature called 101 New Jersey 10, Whippany, NJ 07981, USA at latitude: 408122808
longitude: -743999179
...

Python2 + grpc HEAD@fa9b7c1b: OK

Python3 + grpc HEAD@fa9b7c1b

root@d732fe4c214d:/# . venv3/bin/activate
(venv3) root@d732fe4c214d:/# protoc --python_out=. --grpc_out=. --plugin=protoc-gen-grpc=$(command -v grpc_python_plugin-master) *.proto
(venv3) root@d732fe4c214d:/# ./rg_srv.py &
[1] 24234
(venv3) root@d732fe4c214d:/# ./rg_cli.py
-------------- GetFeature --------------
Traceback (most recent call last):
  File "./rg_cli.py", line 138, in <module>
    run()
  File "./rg_cli.py", line 128, in run
    guide_get_feature(stub)
  File "./rg_cli.py", line 67, in guide_get_feature
    guide_get_one_feature(stub, route_guide_pb2.Point(latitude=409146138, longitude=-746188906))
  File "./rg_cli.py", line 55, in guide_get_one_feature
    feature = stub.GetFeature(point, _TIMEOUT_SECONDS)
  File "/venv/lib/python3.5/site-packages/grpc/framework/crust/implementations.py", line 75, in __call__
    protocol_options, metadata, request)
  File "/venv/lib/python3.5/site-packages/grpc/framework/crust/_calls.py", line 109, in blocking_unary_unary
    return next(rendezvous)
  File "/venv/lib/python3.5/site-packages/grpc/framework/crust/_control.py", line 409, in __next__
    return self.next()
  File "/venv/lib/python3.5/site-packages/grpc/framework/crust/_control.py", line 415, in next
    raise self._termination.abortion_error
grpc.framework.interfaces.face.face.LocalError: LocalError(code=StatusCode.UNIMPLEMENTED, details="b'Method "b\'GetFeature\'" of service "b\'routeguide.RouteGuide\'" not implemented!'")

Python3 + grpc HEAD@fa9b7c1b: BROKEN


Results

Python version Grpc version Outcome of GRPC functionality
Python 2 grpc v0.14.1 OK
Python 3 grpc v0.14.1 BROKEN
Python 2 grpc HEAD@fa9b7c1b OK
Python 3 grpc HEAD@fa9b7c1b BROKEN

So, python3 is not working for me regardless of which version of grpc_python_plugin is in play.

Additional info:

Python2 pip freeze output:

(venv2) root@d732fe4c214d:/# pip freeze
Cython==0.24
enum34==1.1.6
futures==3.0.5
grpcio==0.14.0
pkg-resources==0.0.0
protobuf==3.0.0b3
six==1.10.0

Python3 pip freeze output:

(venv3) root@d732fe4c214d:/# pip freeze
Cython==0.24
enum34==1.1.6
futures==3.0.5
grpcio==0.14.0
pkg-resources==0.0.0
protobuf==3.0.0b3
six==1.10.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment