The library for nest style microservice
Project description
python-nest
Python library for nest style Microservices
Description
There is one nodejs framework named nestjs which is perfect to develop microservices. but we wanted to implement some microservices in python to work together with nestjs framework, I didn't find a solution, so I developed this package to do that, for now, it only implemented the MessagePattern so in nestjs, it is @MessagePattern and we can have same function in python with this lib/package.
How to use
Install latest version
pip install python-nestjs
The microservices server
in nestjs, you can do it with @MessagePattern, and the pattern can be string or object in nestjs, similarly in python the pattern can also be str or dict, you can find sample code test_server.py here is sample code, e.g.
in your nest_server.py
#!/usr/bin/env python # -*- coding:utf-8 -*- from nest import NestMsServer, MessagePatternBaseHandler app = NestMsServer()
to have handler function to process the pattern, you have two options
- have a class which extends
MessagePatternBaseHandler
- have the class
class TestDictHanlder(MessagePatternBaseHandler): def __init__(self): pass def get_message_pattern(self): '''return the message pattern it can be string or dict e.g. 'TEST' or {'cmd': 'test'} ''' return {'cmd': 'TEST_PATTERN' } def handle(self, payload): '''handler function to process payload It should returns err - any error or None result - the processed result ''' print(payload) return None, ['this is test dict', 'another test dict result']
- add/register the handler class
app.add_handler(TestDictHanlder)
- have a function decorated with decorator
message_pattern
- write a function and decorate it
@app.message_pattern({'cmd': 'test_decorator'}) def test_decorator(payload): '''test decorator function the function accepts one parameter payload ''' print(payload) return None, payload
start/run it
HOST ='localhost' PORT = 7086 print(f'started to run and listed to port {PORT}') app.run(HOST, PORT)
The microservices client
if you want to call microservices which was implemented in nestjs, it is also simple, find in test_client.py or sample code here.
#!/usr/bin/env python # -*- coding:utf-8 -*- from nest import NestMsClient if __name__ == '__main__': HOST ='localhost' PORT = 7086 client = NestMsClient(HOST, PORT) pattern = 'TEST_PATTERN' res = client.send(pattern, None) print(res) pattern = { 'cmd' :'TEST_PATTERN' } res = client.send(pattern, None) print(res) pattern = { 'cmd' :'test_decorator' } res = client.send(pattern, 'this is ok') print(res)
Maintainers
Contributors
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size python_nestjs-0.0.4-py3-none-any.whl (7.6 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size python-nestjs-0.0.4.tar.gz (5.8 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for python_nestjs-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5618af1abd664c12f03bae1515d2530396c3a4824e20a479e4cb5cf487cc0e8b |
|
MD5 | 68b91f20668d75a598a46455ba727c18 |
|
BLAKE2-256 | 1e061c15bc689bbc88eb0690956b5b07f3012b688f462d70578dba15e1d94098 |