Tipos de Entrada Lua
Tipos de Entrada Lua
Seção intitulada “Tipos de Entrada Lua”Configuração para entradas baseadas em Lua: funções, processos, workflows e bibliotecas.
Tipos de Entrada
Seção intitulada “Tipos de Entrada”| Tipo | Descrição |
|---|---|
function.lua | Função stateless, executa sob demanda |
process.lua | Ator de longa duração com estado |
workflow.lua | Workflow durável (Temporal) |
library.lua | Código compartilhado importado por outras entradas |
module.lua | Superfície de módulo (biblioteca com vários métodos) |
Cada tipo tem uma contraparte de bytecode pré-compilado (function.lua.bc, library.lua.bc, process.lua.bc, workflow.lua.bc) gerada por wippy pack --bytecode. Os autores escrevem entradas .lua; os tipos de bytecode são emitidos automaticamente ao empacotar.
Campos Comuns
Seção intitulada “Campos Comuns”Todas as entradas Lua compartilham estes campos:
| Campo | Obrigatório | Descrição |
|---|---|---|
name | sim | Nome único dentro do namespace |
kind | sim | Um dos tipos Lua acima |
source | sim | Caminho do arquivo Lua (file://path.lua) |
method | function/process/workflow | Função a exportar (bibliotecas não usam) |
modules | não | Módulos permitidos para require() |
imports | não | Outras entradas como módulos locais |
meta | não | Metadados pesquisáveis |
function.lua
Seção intitulada “function.lua”Função stateless chamada sob demanda. Cada invocação é independente.
- name: handler kind: function.lua source: file://handler.lua method: main modules: - http - jsonUse para: HTTP handlers, transformações de dados, utilitários.
process.lua
Seção intitulada “process.lua”Ator de longa duração que mantém estado entre mensagens. Comunica via passagem de mensagens.
- name: worker kind: process.lua source: file://worker.lua method: main modules: - process - sqlUse para: Workers em background, daemons de serviço, atores com estado.
Para executar como serviço supervisionado:
- name: worker_service kind: process.service process: app:worker host: app:processes lifecycle: auto_start: true restart: max_attempts: 10workflow.lua
Seção intitulada “workflow.lua”Workflow durável que sobrevive a reinicializações. Estado é persistido no Temporal.
- name: order_processor kind: workflow.lua source: file://order_workflow.lua method: main modules: - workflow - timeUse para: Processos de negócio multi-etapa, orquestrações de longa duração.
library.lua
Seção intitulada “library.lua”Código compartilhado que pode ser importado por outras entradas.
- name: helpers kind: library.lua source: file://helpers.lua modules: - json - base64Outras entradas referenciam via imports:
- name: handler kind: function.lua source: file://handler.lua method: main imports: helpers: app.lib:helpersNo código Lua:
local helpers = require("helpers")helpers.format_date(timestamp)Modules
Seção intitulada “Modules”O campo modules controla quais módulos podem ser carregados com require():
modules: - http - json - sql - processchannel, print, subscribe e unsubscribe são carregados como globais Lua e não precisam aparecer em modules:.
Apenas módulos listados estão disponíveis. Isso fornece:
- Segurança: Prevenir acesso a módulos de sistema
- Dependências explícitas: Claro o que o código precisa
- Determinismo: Workflows só recebem módulos determinísticos
Veja Lua Runtime para módulos disponíveis.
Imports
Seção intitulada “Imports”Importe outras entradas como módulos locais:
imports: utils: app.lib:utils # require("utils") auth: app.auth:helpers # require("auth")A chave se torna o nome do módulo no código Lua. O valor é o ID da entrada (namespace:name).
Configuração de Pool
Seção intitulada “Configuração de Pool”Configure pool de execução para funções:
- name: handler kind: function.lua source: file://handler.lua method: main pool: type: adaptive # padrão size: 4 # workers iniciais max_size: 16 # limite para pools elásticos| Campo | Pools | Descrição |
|---|---|---|
type | todos | Implementação do scheduler (ver tabela abaixo) |
size | static, lazy, adaptive | Quantidade inicial de workers |
workers | engine v2 | Quantidade de threads worker |
buffer | static, adaptive | Capacidade da fila de tarefas (padrão workers * 64) |
warm_start | adaptive | Pré-compilar entradas na inicialização |
max_size | lazy, adaptive | Limite superior para crescimento elástico (padrão 16) |
| Tipo | Comportamento |
|---|---|
inline | Execução síncrona na goroutine do chamador. Latência mínima, sem isolamento entre chamadas. |
lazy | Sem workers ociosos, criados sob demanda, removidos quando ociosos. |
static | Pool de tamanho fixo baseado em canais. Previsível sob carga estável. |
adaptive | Pool com auto-escala — cresce sob carga, encolhe quando ocioso. Padrão. |
Metadados
Seção intitulada “Metadados”Use meta para roteamento e descoberta:
- name: api_handler kind: function.lua meta: type: handler version: "2.0" tags: [api, users] source: file://api.lua method: handle modules: - http - jsonMetadados são pesquisáveis via registro:
local registry = require("registry")local handlers = registry.find({type = "handler"})Veja Também
Seção intitulada “Veja Também”- Entry Kinds - Referência de todos os tipos de entrada
- Compute Units - Funções vs processos vs workflows
- Lua Runtime - Módulos disponíveis