Skip to main content

Build microservices with Python

Project description

The gemstone framework

https://badge.fury.io/py/gemstone.svg https://travis-ci.org/vladcalin/gemstone.svg?branch=master https://ci.appveyor.com/api/projects/status/i6rep3022e7occ8e?svg=true Documentation Status https://coveralls.io/repos/github/vladcalin/gemstone/badge.svg?branch=master Code Climate Code Health

An extensible and simplistic library for writing microservices in Python.

Core features:

  • JSON RPC 2.0 communication (request-response)

  • Event based communication (publisher-subscriber)

  • autodiscovery

  • dynamic configuration of the services

  • possibility to add web application functionality

  • API token based security

See the documentation for more info: documentation

Check out the issue tracker: issue tracker

Changes: Changelog

0.6.0 (14.02.2017)

  • added configurable framework:
    • gemstone.config.configurable.Configurable class

    • gemstone.config.configurator.* classes

    • gemstone.MicroService.configurables and gemstone.MicroService.configurators attributes

    • switched testing to pytest

    • improved documentation (restructured and minor additions). Still a work in progress

0.5.0 (09.02.2017)

  • added support for publisher-subscriber communication method:
    • base class for event transports: gemstone.event.transport.BaseEventTransport

    • first concrete implementation: gemstone.event.transport.RabbitMqEventTransport

    • gemstone.MicroService.emit_event for publishing an event

    • gemstone.event_handler decorator for designating event handlers

  • restructured documentation (added tutorial, examples and howto sections).

  • added asynchronous method calls in gemstone.RemoteService.

  • added gemstone.as_completed, gemstone.first_completed, gemstone.make_callbacks utility functions for dealing with asynchronous method calls.

0.4.0 (25.01.2017)

  • modified accessible_at attribute of the gemstone.MicroService class

  • added the endpoint attribute to the gemstone.MicroService class

  • improved how the microservice communicates with the service registry

0.3.1 (25.01.2017)

  • fixed event loop freezing on Windows

  • fixed a case when a TypeError was silenced when handling the bad parameters error in JSON RPC 2.0 handler (#21)

  • major refactoring (handling of JSON RPC objects as Python objects instead of dicts and lists) to improve readability and maintainability

  • improved documentation

0.3.0 (23.01.2017)

  • added validation strategies (method for extraction of api token from the request)

  • base subclass for implementing validation strategies

  • built in validation strategies: HeaderValidationStrategy, BasicCookieStrategy

  • improved documentation

0.2.0 (17.01.2017)

  • added gemstone.RemoteService.get_service_by_name method

  • added call command to cli

  • added call_raw command to cli

  • improved documentation a little

0.1.3 (16.01.2017)

  • fixed manifest to include required missing files

0.1.2 (16.01.2017)

  • added py36 to travis-ci

  • refactored setup.py and reworked description files and documentation for better rendering

0.1.1 (13.01.2017)

  • changed the name of the library from pymicroservice to gemstone

  • added the gemstone.MicroService.accessible_at attribute

0.1.0 (09.01.2017)

  • added the pymicroservice.PyMicroService.get_cli method

  • improved documentation a little bit

0.0.4

  • fixed bug when sending a notification that would result in an error was causing the microservice to respond abnormally (see #10)

  • fixed a bug that was causing the service to never respond with the invalid parameters status when calling a method with invalid parameters

0.0.3

  • added pymicroservice.RemoteService class

  • added the pymicroservice.PyMicroService.get_service(name)

  • improved documentation

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

gemstone-0.7.0.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

gemstone-0.7.0-py3-none-any.whl (46.2 kB view details)

Uploaded Python 3

File details

Details for the file gemstone-0.7.0.tar.gz.

File metadata

  • Download URL: gemstone-0.7.0.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for gemstone-0.7.0.tar.gz
Algorithm Hash digest
SHA256 10ea9a73efc1d37860e4e96b38e1aa495c9bb117c974a3d9d40c33588a4c4d46
MD5 17fc9d9c151032a24ce1b525d1598bb9
BLAKE2b-256 5c83ebee04098f8bcfc6a87979dd5eedaf53d571560f3096b4be078fe5e9efb0

See more details on using hashes here.

File details

Details for the file gemstone-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gemstone-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7bcb8a6092e59a4d456d9f47ba7e69052db86c51231b712248193a6d5d135ed
MD5 46894e396aec0dc4e661a9d1344dfcfb
BLAKE2b-256 8902a1bfdefd4a120983812a3398e08e74484434e15ff233429c6d0214371350

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