Lua Entry-Arten
Konfiguration für Lua-basierte Entries: Funktionen, Prozesse, Workflows und Bibliotheken.
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
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
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
- json
Verwendung für: HTTP-Handler, Datentransformationen, Hilfsfunktionen.
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
- sql
Verwendung 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: 10
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
- time
Verwendung für: Mehrstufige Geschäftsprozesse, lang laufende Orchestrierungen.
library.lua
Gemeinsam genutzter Code, der von anderen Entries importiert werden kann.
- name: helpers
kind: library.lua
source: file://helpers.lua
modules:
- json
- base64
Andere Entries referenzieren sie über imports:
- name: handler
kind: function.lua
source: file://handler.lua
method: main
imports:
helpers: app.lib:helpers
Im Lua-Code:
local helpers = require("helpers")
helpers.format_date(timestamp)
Module
Das modules-Feld steuert, welche Module mit require() geladen werden können:
modules:
- http
- json
- sql
- process
channel, 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
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
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
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
- json
Metadaten sind über die Registry durchsuchbar:
local registry = require("registry")
local handlers = registry.find({type = "handler"})
Siehe auch
- Entry-Arten - Referenz aller Entry-Arten
- Compute Units - Funktionen vs. Prozesse vs. Workflows
- Lua-Laufzeitumgebung - Verfügbare Module