Django intergration for nameko microservice framework.
Project description
django-nameko
Travis-CI
Branch | Build status |
---|---|
master | |
develop |
nameko-django
Django intergration for nameko microservice framework
Custom Kombu Serializer for django Object using msgpack and pickle
This serializer is fully compatible with msgpack so it can be used like this:
serializer: 'django_msgpackpickle'
ACCEPT: ['msgpack', 'django_msgpackpickle']
SERIALIZERS:
msgpack:
encoder: 'nameko_django.serializer.dumps'
decoder: 'nameko_django.serializer.loads'
content_type: 'application/x-msgpack'
content_encoding: 'binary'
In order to migrate an existing microservices stack (that use msgpack
serializer) to use this new serializer
first install and setup all project
serializer: 'msgpack'
ACCEPT: ['msgpack', 'django_msgpackpickle']
SERIALIZERS:
msgpack:
encoder: 'nameko_django.serializer.pack'
decoder: 'nameko_django.serializer.loads'
content_type: 'application/x-msgpack'
content_encoding: 'binary'
This will accept both of the msgpack
and django_msgpackpickle
but only output of result portfolio using msgpack
Once all service migrated, then switch to the first configuration
Features
This serializer will automatically encode and decode:
- DateTime, Date, Time, Duration: object will be converted to string representation compatible with django.utils.dateparse and convert back using django.utils.dateparse()
- Decimal: object will be converted to byte string and then recover back to Decimal
- Django ORM instance: object will be pickled using python cPickle/pickle library and depickled back to ORM Model instance
- Django ORM queryset: object will be deform to Model + Query then pickled to avoid sending a list of instance
String evaluation
This serializer can evaluate string that is compatible with django.utils.dateparse
format
and auto convert the string to either DateTime
, Date
, Time
, Duration
object.
Also it can evaluate string with format like this:
"<app_name.model_name.ID>"
this will be converted to an ORM instance: using Model.objects.get(pk=ID)
For example: <auth.User.1>
"(app_name.model_name: RAW_QUERY_WITHOUT_SELECT_FROM)"
this will be converted to an ORM queryset
For example: (auth.User: id >= 1 and date_joined > '2018-11-22 00:47:14.263837')
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
File details
Details for the file nameko-django-1.1.2.tar.gz
.
File metadata
- Download URL: nameko-django-1.1.2.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3ca35c2b437198a3358928975eb1f0153366eb3af16e9c35dbd44ab29a295ec |
|
MD5 | 8e4904e350dbb61d8adc5cf382a8b981 |
|
BLAKE2b-256 | c05136bd6b328d8b29d4d2d8ccf0357f8fb0ec69eac4d4f15e851ff1579bd06c |