Skip to main content

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
  1. 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']
  1. add/register the handler class
app.add_handler(TestDictHanlder)
  • have a function decorated with decorator message_pattern
  1. 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

@jerrywang1981

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.

Source Distribution

python-nestjs-0.0.4.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

python_nestjs-0.0.4-py3-none-any.whl (7.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page