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.4.tar.gz (10.5 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.4-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: oborpc-0.2.4.tar.gz
  • Upload date:
  • Size: 10.5 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.4.tar.gz
Algorithm Hash digest
SHA256 632bbf24a7a44a504ac72043c506e3be6506798a17cc74465d453413703ed5c4
MD5 d3619112e00befbe5fd45d8efe81584d
BLAKE2b-256 afc42f3af4c8af09bfa5108d9177c3f93c3671b58f365f21e35dcb4fa93c844e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: oborpc-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 12.8 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dbcb8da69ffc5817c9feae870559cb7cdcfd46039d9807a44ef191b3613f50e0
MD5 bf6b014cdc17c095fd19969f9e2e79ad
BLAKE2b-256 7376b272a7d006a4c211b89d5f192960fb1aee2c5065a91796b9eb02302f0cc2

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