Python library for nest style Microservices
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.
pip install python-nestjs
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.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from nest import NestMsServer, MessagePatternBaseHandler
app = NestMsServer()
- 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
HOST ='localhost'
PORT = 7086
print(f'started to run and listed to port {PORT}')
app.run(HOST, PORT)
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)
MIT License