Provides a platform for automation with code-first approach, with embedded batteries:
- Tracing (journals)
- Internal and user-defined API
- Ultra-light but rich mobile-first UI
- Embedded key-value storage
It is heavily inspired by node-red and aims to provide same enjoyment during development but without mess of nodes and connections for tasks a little bit more complicated than just hello world.
The platform also tries to be easy in deployment and maintaining. Code could be stored in a SCM (ex: git) and persistent storage is just a single file that could be backed up and restored trivially.
Because memory and CPU consumption relatively low a solution based on the platform could be launched even on Raspberry Pi Zero with 512MB RAM.
pip install binp uvicorn[standard]
from random import randint from binp import BINP binp = BINP() @binp.app.post('/random', response_model=int) @binp.journal async def generate_random(): """ Generate random number in range 0 ... 1024 """ return randint(0, 1024) @binp.action @binp.journal async def currency_rate(): """ Fetch currency rate for EUR -> USD """ # go to external service euro = 1.3 await binp.journal.record('rates fetched', base_currency='USD', euro=euro)
Save as ‘example.py’ and run it by
uvicornto support automatic reload during development
It will expose
- http://127.0.0.1:8000 - UI and API
- http://127.0.0.1:8000/docs - Swagger docs for user-defined APIs
- http://127.0.0.1:8000/internal/docs - Swagger docs for internal APIs