Skip to main content

An easy setup object oriented RPC. Built-in setup for FastAPI and Flask

Project description

OBORPC

Downloads

Description

An easy to build RPC based on Object Oriented Programming. Build your RPC in seconds. Built-in setup for FastAPI and Flask.

Installation

pip install oborpc

Basic Examples

  1. Create calculator.py as your base
from oborpc.base import meta
from oborpc.decorator import procedure

class Calculator(meta.RPCBase):
    @procedure
    def add(self, a: int, b: int):
        pass

    @procedure
    def subtract(self, a: int, b: int):
        pass

class CalculatorServer(Calculator):
    def add(self, a: int, b: int):
        print(f"adding {a} and {b}")
        return a+b

    def subtract(self, a: int, b: int):
        print(f"subtracting {a} and {b}")
        return a - b
  1. Create your App, below we give 2 examples how to do it with Flask or FastAPI

    • using Flask
    from oborpc.builder import FlaskServerBuilder
    from calculator import CalculatorServer
    from flask import Flask
    
    calculator_server = CalculatorServer()
    
    server_builder = FlaskServerBuilder("http://localhost", 9000)
    calculator_blueprint = server_builder.build_blueprint_from_instance(
        calculator_server, "calculator", "calculator"
    )
    
    app = Flask(__name__)
    app.register_blueprint(calculator_blueprint)
    
    app.run(port=8000)
    
    • using FastAPI
    from oborpc.builder import FastAPIServerBuilder
    from calculator import CalculatorServer
    
    calculator_server = CalculatorServer()
    
    server_builder = FastAPIServerBuilder("http://localhost", 8000)
    calculator_router = server_builder.build_router_from_instance(
        calculator_server, prefix=""
    )
    
    
    from fastapi import FastAPI
    
    app = FastAPI()
    app.include_router(calculator_router)
    
  2. Create client, you can create a simple client.py or a client application

    • simple client.py
    from oborpc.builder import ClientBuilder
    from calculator import Calculator
    
    calculator = Calculator()
    
    client_builder = ClientBuilder("http://localhost", 8000)
    client_builder.build_client_rpc(calculator)
    
    print(calculator.add(1,2))
    
    • client application
    from calculator import Calculator
    from fastapi import FastAPI
    from oborpc.builder import ClientBuilder, FastAPIServerBuilder
    
    ## RPC setup
    calculator = Calculator()
    
    clientBuilder = ClientBuilder("http://localhost", 9000)
    clientBuilder.build_client_rpc(calculator)
    
    ## application
    app = FastAPI()
    
    @app.get("/calculator/add")
    def get_add_results(a: float, b: float):
        return calculator.add(a, b)
    
  3. Your RPC is ready to go!

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

oborpc-0.2.2.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oborpc-0.2.2-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file oborpc-0.2.2.tar.gz.

File metadata

  • Download URL: oborpc-0.2.2.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for oborpc-0.2.2.tar.gz
Algorithm Hash digest
SHA256 185cf53866096c58f558c83467e994831f3950b4a436f6202f52d6b7cd855b95
MD5 8c645720ffc0c388e652ba02fd95b227
BLAKE2b-256 de96cb492fa7690037f0e98eef791b16b58941c05797d61452eabf768398d931

See more details on using hashes here.

File details

Details for the file oborpc-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: oborpc-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for oborpc-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1bac44ca955cc549880766a97abf5e5295ff60cd16b02d4e03ea8a7621f620e1
MD5 d8b20142f51c6c7b126f68919d619bdf
BLAKE2b-256 8bd964b24fdf29822b93a38e65b84134c54375b56d179b6403f9724a4426abdf

See more details on using hashes here.

Supported by

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