gRPC for Django.
Project description
Django gRPC framework is a toolkit for building gRPC services, inspired by djangorestframework.
Installation
$ pip install djangogrpcframework
Add django_grpc_framework to INSTALLED_APPS setting:
INSTALLED_APPS = [ ... 'django_grpc_framework', ]
Demo
Here is a quick example of using gRPC framework to build a simple model-backed service for accessing users, startup a new project:
$ django-admin startproject demo
$ python manage.py migrate
Now define protos in demo.proto:
syntax = "proto3"; package demo; import "google/protobuf/empty.proto"; message User { int32 id = 1; string username = 2; string email = 3; } service UserController { rpc List(google.protobuf.Empty) returns (stream User) {} rpc Create(User) returns (User) {} rpc Retrieve(User) returns (User) {} rpc Update(User) returns (User) {} rpc Destroy(User) returns (google.protobuf.Empty) {} }
Generate gRPC code:
python -m grpc_tools.protoc --proto_path=./ --python_out=./ --grpc_python_out=./ ./demo.proto
Now edit the demo/urls.py module:
from django.contrib.auth.models import User
from rest_framework import serializers
from django_grpc_framework import generics
import demo_pb2
import demo_pb2_grpc
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email']
class UserService(generics.ModelService):
queryset = User.objects.all()
serializer_class = UserSerializer
protobuf_class = demo_pb2.User
urlpatterns = []
def grpc_handlers(server):
demo_pb2_grpc.add_UserControllerServicer_to_server(UserService.as_servicer(), server)
That’s it, we’re done!
$ python manage.py grpcrunserver --dev
You can now run a gRPC client to access the service:
from google.protobuf import empty_pb2
with grpc.insecure_channel('localhost:50051') as channel:
stub = demo_pb2_grpc.UserControllerStub(channel)
for user in stub.List(empty_pb2.Empty()):
print(user, end='')
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
djangogrpcframework-0.1.tar.gz
(10.5 kB
view hashes)
Built Distribution
Close
Hashes for djangogrpcframework-0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11d58f74dbd2a5d9797b77fb850e6f8a02a7a5c3248614ea16dee8b3f040de1b |
|
MD5 | 6da48e9a79a87ca313ad97fc6f994eda |
|
BLAKE2b-256 | 932681f86038a3d24878217168a5c897b05b0bf573df680fcc679f14a04f2bb9 |