Easy Django based gRPC service
Project description
django-grpc
Easy way to launch gRPC server with access to Django ORM and other handy staff. gRPC calls are much faster that traditional HTTP requests because communicate over persistent connection and are compressed. Underlying gRPC library is written in C which makes it work faster than any RESTful framework where a lot of time is spent on serialization/deserialization.
Note that you need this project only if you want to use Django functionality in gRPC service. For pure python implementation read this
- Supported Python: 3.4+
- Supported Django: 2.X (let me know if you need Django 3 support)
Installation
pip install django-grpc
Update settings.py
INSTALLED_APPS = [
# ...
'django_grpc',
]
GRPCSERVER = {
'servicers': ['dotted.path.to.callback.eg.grpc_hook'], # see `grpc_hook()` below
'interceptors': ['dotted.path.to.interceptor_class',], # optional, interceprots are similar to middleware in Django
'maximum_concurrent_rpcs': None,
}
The callback that initializes "servicer" must look like following:
import my_pb2
import my_pb2_grpc
def grpc_hook(server):
my_pb2_grpc.add_MYServicer_to_server(MYServicer(), server)
...
class MYServicer(my_pb2_grpc.MYServicer):
def GetPage(self, request, context):
response = my_pb2.PageResponse(title="Demo object")
return response
Usage
python manage.py grpcserver
For developer's convenience add --autoreload
flag during development.
Serializers
There is an easy way to serialize django model to gRPC message using django_grpc.serializers.serialize_model
.
Testing
You can call methods of your servicer and decode them using django_grpc.serializers.deserialize_message
that
will convert gRPC messages to python dictionary
History
1.0.1 (2019-12-09)
- First stable release on PyPI.
0.1.0 (2019-01-18)
- First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_grpc-1.0.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6920683c4e1d50fe294b663b99a16d1e5d5d73ee85e72db573823ea0cdcd27e0 |
|
MD5 | 23a9b66f957f8ad472787182f8d205e1 |
|
BLAKE2b-256 | 1cb5c4cde40a9bd3907dbc91e7814bda445a2c6fb729b4c691265f977d3bd8a1 |