@@ -20,7 +20,7 @@
|
||||
"methods": [
|
||||
{
|
||||
"name": "actor.create",
|
||||
"summary": "Create/Upsert Actor in a context",
|
||||
"summary": "Create/Upsert Actor",
|
||||
"params": [
|
||||
{
|
||||
"name": "params",
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
{
|
||||
"name": "actor.load",
|
||||
"summary": "Load an Actor by id from a context",
|
||||
"summary": "Load an Actor by id",
|
||||
"params": [
|
||||
{
|
||||
"name": "params",
|
||||
@@ -1181,14 +1181,9 @@
|
||||
"ActorCreateParams": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"context_id",
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"context_id": {
|
||||
"type": "integer",
|
||||
"format": "uint32"
|
||||
},
|
||||
"actor": {
|
||||
"$ref": "#/components/schemas/ActorCreate"
|
||||
}
|
||||
@@ -1197,14 +1192,9 @@
|
||||
"ActorLoadParams": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"context_id",
|
||||
"id"
|
||||
],
|
||||
"properties": {
|
||||
"context_id": {
|
||||
"type": "integer",
|
||||
"format": "uint32"
|
||||
},
|
||||
"id": {
|
||||
"type": "integer",
|
||||
"format": "uint32"
|
||||
|
@@ -10,7 +10,7 @@
|
||||
| **Runner** | Public key, Mycelium address, topic name, type (`v\|python\|osis\|rust`), local flag, timestamps | `runner:<id>` (hash) | The *worker* that actually executes **RunnerJob** scripts. It subscribes to a Mycelium topic (normally `runner<id>`). If `local == true` the runner also consumes jobs directly from a Redis queue that is named after the script‑type suffix (`v`, `python`, …). |
|
||||
| **RunnerJob**| Script source, type (`osis\|sal\|v\|python`), env‑vars, prerequisites, dependencies, status, timestamps, result map | `job:<caller_id>:<id>` (hash) | A single executable unit. It lives inside a **Context**, belongs to a **Runner**, and is queued according to its `script_type` (e.g. `queue:python`). Its status moves through the lifecycle `dispatched → waiting_for_prerequisites → started → finished|error`. |
|
||||
|
||||
> **Key idea:** All objects are persisted as *hashes* in a **Redis** database that is dedicated to a *Context*. The system is completely **decentralised** – each actor owns its own context and can spin up as many runners as needed. Communication between actors, runners and the rest of the system happens over **Mycelium**, a message‑bus that uses Redis lists as queues.
|
||||
> **Key idea:** All objects are persisted as *hashes*. Context‑scoped objects (**Context**, **Flow**, **Message**, **Runner**, **RunnerJob**) live in a **Redis** database dedicated to that context. **Actors are global** and are stored in Redis DB 0 under `actor:<id>`. The system is completely **decentralised** – each actor owns its own context and can spin up as many runners as needed. Communication between actors, runners and the rest of the system happens over **Mycelium**, a message‑bus that uses Redis lists as queues.
|
||||
|
||||
---
|
||||
|
||||
|
Reference in New Issue
Block a user