Lua Entry-Arten
Lua Entry-Arten
Abschnitt betitelt „Lua Entry-Arten“Konfiguration für Lua-basierte Entries: Funktionen, Prozesse, Workflows und Bibliotheken.
Entry-Arten
Abschnitt betitelt „Entry-Arten“| Art | Beschreibung |
|---|---|
function.lua | Zustandslose Funktion, läuft bei Bedarf |
process.lua | Lang laufender Aktor mit Zustand |
workflow.lua | Dauerhafter Workflow (Temporal) |
library.lua | Gemeinsam genutzter Code, der von anderen Entries importiert wird |
module.lua | Modul-Oberfläche (Bibliothek mit mehreren Methoden) |
Jede Art hat ein vorkompiliertes Bytecode-Gegenstück (function.lua.bc, library.lua.bc, process.lua.bc, workflow.lua.bc), das von wippy pack --bytecode erzeugt wird. Autoren schreiben .lua-Entries; die Bytecode-Arten werden beim Packen automatisch erzeugt.
Gemeinsame Felder
Abschnitt betitelt „Gemeinsame Felder“Alle Lua-Entries teilen diese Felder:
| Feld | Erforderlich | Beschreibung |
|---|---|---|
name | ja | Eindeutiger Name innerhalb des Namespace |
kind | ja | Eine der oben genannten Lua-Arten |
source | ja | Lua-Dateipfad (file://path.lua) |
method | function/process/workflow | Zu exportierende Funktion (Bibliotheken nutzen sie nicht) |
modules | nein | Erlaubte Module für require() |
imports | nein | Andere Entries als lokale Module |
meta | nein | Durchsuchbare Metadaten |
function.lua
Abschnitt betitelt „function.lua“Zustandslose Funktion, die bei Bedarf aufgerufen wird. Jeder Aufruf ist unabhängig.
- name: handler kind: function.lua source: file://handler.lua method: main modules: - http - jsonVerwendung für: HTTP-Handler, Datentransformationen, Hilfsfunktionen.
process.lua
Abschnitt betitelt „process.lua“Lang laufender Aktor, der Zustand über Nachrichten hinweg beibehält. Kommuniziert über Nachrichtenübergabe.
- name: worker kind: process.lua source: file://worker.lua method: main modules: - process - sqlVerwendung für: Hintergrund-Worker, Service-Daemons, zustandsbehaftete Aktoren.
Um als überwachter Service zu laufen:
- name: worker_service kind: process.service process: app:worker host: app:processes lifecycle: auto_start: true restart: max_attempts: 10workflow.lua
Abschnitt betitelt „workflow.lua“Dauerhafter Workflow, der Neustarts überlebt. Zustand wird in Temporal gespeichert.
- name: order_processor kind: workflow.lua source: file://order_workflow.lua method: main modules: - workflow - timeVerwendung für: Mehrstufige Geschäftsprozesse, lang laufende Orchestrierungen.
library.lua
Abschnitt betitelt „library.lua“Gemeinsam genutzter Code, der von anderen Entries importiert werden kann.
- name: helpers kind: library.lua source: file://helpers.lua modules: - json - base64Andere Entries referenzieren sie über imports:
- name: handler kind: function.lua source: file://handler.lua method: main imports: helpers: app.lib:helpersIm Lua-Code:
local helpers = require("helpers")helpers.format_date(timestamp)Das modules-Feld steuert, welche Module mit require() geladen werden können:
modules: - http - json - sql - processchannel, print, subscribe und unsubscribe werden als Lua-Globale geladen — sie müssen nicht in modules: aufgeführt werden.
Nur aufgelistete Module sind verfügbar. Dies bietet:
- Sicherheit: Verhindert Zugriff auf Systemmodule
- Explizite Abhängigkeiten: Klar, was der Code benötigt
- Determinismus: Workflows erhalten nur deterministische Module
Siehe Lua-Laufzeitumgebung für verfügbare Module.
Imports
Abschnitt betitelt „Imports“Importieren Sie andere Entries als lokale Module:
imports: utils: app.lib:utils # require("utils") auth: app.auth:helpers # require("auth")Der Schlüssel wird zum Modulnamen im Lua-Code. Der Wert ist die Entry-ID (namespace:name).
Pool-Konfiguration
Abschnitt betitelt „Pool-Konfiguration“Konfigurieren Sie den Ausführungspool für Funktionen:
- name: handler kind: function.lua source: file://handler.lua method: main pool: type: adaptive # Standard size: 4 # Anfangs-Worker max_size: 16 # Obergrenze für elastische Pools| Feld | Pools | Beschreibung |
|---|---|---|
type | alle | Scheduler-Implementierung (siehe Tabelle unten) |
size | static, lazy, adaptive | Anfängliche Worker-Anzahl |
workers | Engine v2 | Anzahl der Worker-Threads |
buffer | static, adaptive | Aufgabenwarteschlange-Kapazität (Standard: workers * 64) |
warm_start | adaptive | Einträge beim Start vorkompilieren |
max_size | lazy, adaptive | Obergrenze für elastisches Wachstum (Standard: 16) |
| Typ | Verhalten |
|---|---|
inline | Synchrone Ausführung in der Goroutine des Aufrufers. Geringste Latenz, keine Isolation zwischen Aufrufen. |
lazy | Keine Idle-Worker, Erstellung bei Bedarf, Abbau im Leerlauf. |
static | Pool fester Größe (Channel-basiert). Vorhersagbar bei stabiler Last. |
adaptive | Auto-skalierender Pool — wächst bei Last, schrumpft im Leerlauf. Standard. |
Metadaten
Abschnitt betitelt „Metadaten“Verwenden Sie meta für Routing und Discovery:
- name: api_handler kind: function.lua meta: type: handler version: "2.0" tags: [api, users] source: file://api.lua method: handle modules: - http - jsonMetadaten sind über die Registry durchsuchbar:
local registry = require("registry")local handlers = registry.find({type = "handler"})Siehe auch
Abschnitt betitelt „Siehe auch“- Entry-Arten - Referenz aller Entry-Arten
- Compute Units - Funktionen vs. Prozesse vs. Workflows
- Lua-Laufzeitumgebung - Verfügbare Module