Skip to main content

Build microservices with Python

Project description

The **pymicroservice** framework

[![Build Status](](
[![Documentation Status](](
[![PyPI version](](
[![Coverage Status](](


In the past years, the microservice-based architecture became very popular in the computing field.
Although this architecture grew more and more popular, there are a few tools that can help an
individual to build such systems. The current alternatives are using [nameko](
or by building a web application that acts like a microservice. I started developing this framework in order
to provide a tool for creating and managing such systems with ease, and that are capable of being specialized in
a certain role, be it entity management, data storage or just computing.

Few words ahead

This library uses the asynchronous features of the Tornado web framework for creating a JSON RPC endpoint through which
one can call exposed methods. The method calls are treated asynchronously. If you have no knowledge about asynchronous
programming in Python, I suggest to read a few words from the
`Tornado documentation <>`_ .

Although it is not required for you to know about all that coroutines and event loop theory, it sure helps to understand
what happens *under the hood*.


In order to install this library, run the command

pip install pymicroservice

or to install it from sources

git clone
cd pymicroservice
python install

To run the tests, run the command

python test

Example basic usage
Write into a ```` file the following code:


from pymicroservice.core.microservice import PyMicroService, \
public_method, private_api_method

class HelloWorldService(PyMicroService):
name = ""
host = ""
port = 5000

def say_hello(self, name):
return "hello {}".format(name)

def say_private_hello(self, name):
return "this is secret: hello {}".format(name)

def api_token_is_valid(self, api_token):
return api_token == "hello_world_token"

if __name__ == '__main__':
service = HelloWorldService()


After running the ```` script, we will have a running microservice at
http://localhost:5000/api . In order to interact with it, we have to use
the JSONRPC protocol as follows:

POST /api
"jsonrpc": "2.0",
"method": "say_hello",
"params": {
"name": "world"
"id": 1

The response will be

"error": null,
"id": 1,
"response": "hello world"

In order to access the private method, we have to include in the HTTP
request an ``X-Api-Token`` header with the value ``hello_world``, so that the
method ``api_token_is_valid`` will return ``True``.

This library offers a class through which you can interact with various services:


client = pymicroservice.RemoteClien("http://localhost:5000/api")
print( # ""
print(client.methods.say_hello("world")) # "hello world"



Check the [Github issue tracker](


See [TODO](


Any collaboration is welcome. Feel free to create new issues, make suggestions, open pull requests.


See [](

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

pymicroservice-0.1.0.tar.gz (18.2 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page