Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mmchougule/kedro-grpc-server

Kedro gRPC Server is a Kedro plugin that creates a gRPC server for triggering and monitoring pipeline runs using a general-purpose RPC framework gRPC
https://github.com/mmchougule/kedro-grpc-server

grpc grpc-python grpc-server kedro kedro-plugin protobuf

Last synced: 3 months ago
JSON representation

Kedro gRPC Server is a Kedro plugin that creates a gRPC server for triggering and monitoring pipeline runs using a general-purpose RPC framework gRPC

Awesome Lists containing this project

README

        

# Kedro gRPC Server

[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)]()
[![Current Version](https://img.shields.io/badge/current%20version-0.1-yellow.svg)]()
[![Python Version](https://img.shields.io/badge/python-3.6%20%7C%203.7-blue.svg)]()
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)

This is a Kedro plugin that creates a gRPC server for your kedro pipelines. Exposed RPC calls can be triggered using any of the programming languages that support gRPC.

Demo:

![gRPC server](https://github.com/mmchougule/kedro-grpc-server/blob/master/docs/images/kedro_grpc_server.gif)
![Go Kedro Client](https://github.com/mmchougule/kedro-grpc-server/blob/master/docs/images/go_client_kedro.gif)

Kedro gRPC clients can be in many programming languages.

Some kedro client examples below that call RPCs on a gRPC server running in any kedro project:
- [Python](https://github.com/mmchougule/kedro-grpc-server/blob/master/grpc_client_examples/python/grpc_client.py)
- [Go](https://github.com/mmchougule/kedro-grpc-go-client/)
- [Scala](https://github.com/mmchougule/kedro-grpc-scala-client)
- [Java](https://github.com/mmchougule/kedro-grpc-java-client)
- [Node](https://github.com/mmchougule/kedro-grpc-node-client)
- C++
- C#
- Kotlin
- Dart

More on [grpc.io](https://grpc.io)

- Code generation support in all gRPC frameworks makes it super easy to use for clients who may have a different tech stack and language preference. Simply sharing a kedro.proto file, clients can use their preferred programming language to generate strongly typed kedro clients in any of the languages mentioned above.
- Allowing engineers to natively integrate running of kedro pipelines with their preferred programming language.
- Getting status of kedro pipeline run as a streaming response through HTTP/2. gRPC provides first-class support for this.
- Getting all the benefits of gRPC
- And, enabling business users to interact with analytics from a front-end application and trigger actions or models (e.g. scoring model) on demand.

## How do I install Kedro gRPC Server?

### Prerequisites

Kedro gRPC Server requires [Python 3.6+](https://realpython.com/installing-python/) and [Git](https://help.github.com/en/github/getting-started-with-github/set-up-git) to be setup.

#### Installation

You can install Kedro gRPC Server directly from GitHub with:

```bash
pip install kedro-grpc-server
```

## How do I use Kedro gRPC Server?

To start the server, simply run the following command inside your Kedro project:

```bash
kedro server grpc-start
```

You can specify the host through the flag like so:

```bash
kedro server grpc-start --host
```

Similarly, you can set the port number using `--port`.

## Run

## gRPC API

Exposing 3 RPC calls:

`ListPipelines` -> Returns current list of pipelines

`Run` -> Runs a pipeline with or without arguments

`Status` -> Provides run status of a pipeline with run_id.
The response for this rpc call is a Server Streaming response of all logged events.

## Contributing

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for:
* The contribution code of conduct
* The process for submitting pull requests

## Versioning

We use [SemVer](http://semver.org/) for versioning. The best way to safely upgrade is to check our [release notes](RELEASE.md) for any notable breaking changes.