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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file python-nestjs-0.0.4.tar.gz.

File metadata

  • Download URL: python-nestjs-0.0.4.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.8.0

File hashes

Hashes for python-nestjs-0.0.4.tar.gz
Algorithm Hash digest
SHA256 799ebc82c43d52559e8371823aed06170a5eba68ed0159f5f002a4514c9048ba
MD5 05215a11d3b48806113d68bf61de72cc
BLAKE2b-256 7de385210d46374e6a47d8597636bbe59b23ca1e01c16c42a200bffbfd50812b

See more details on using hashes here.

File details

Details for the file python_nestjs-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: python_nestjs-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.8.0

File hashes

Hashes for python_nestjs-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5618af1abd664c12f03bae1515d2530396c3a4824e20a479e4cb5cf487cc0e8b
MD5 68b91f20668d75a598a46455ba727c18
BLAKE2b-256 1e061c15bc689bbc88eb0690956b5b07f3012b688f462d70578dba15e1d94098

See more details on using hashes here.

Supported by

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