python-nest
python-nest copied to clipboard
Python library for nest style Microservices
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