Opciones / Configuración
Esta sección cubre todas las opciones configurables por el usuario para faucet.
Opciones Globales
Estas opciones se pueden usar con los subcomandos start y router.
Host
- CLI:
--host - Entorno:
FAUCET_HOST - Predeterminado:
127.0.0.1:3838
El host y el puerto al que se vinculará el servidor faucet. Si se ejecuta en un contenedor, esto debería establecerse en 0.0.0.0:3838 para permitir el acceso externo.
IP From (Cómo determinar la IP del cliente)
- CLI:
--ip-fromo-i - Entorno:
FAUCET_IP_FROM - Predeterminado:
client - Valores posibles:
clientx-forwarded-forx-real-ip
Cómo determinar la IP del cliente. Esto se utiliza para determinar la IP para la estrategia de IP Hash y para el registro de solicitudes HTTP. Si estás ejecutando faucet directamente para los usuarios finales, deberías usar client. Si estás ejecutando faucet detrás de un proxy inverso como nginx, deberías usar x-forwarded-for o x-real-ip.
Nota: Si estás ejecutando faucet detrás de un proxy inverso, asegúrate de establecer correctamente la cabecera
X-Forwarded-ForoX-Real-IPen la configuración de tu proxy inverso.
Rscript (Definir un binario/ejecutable Rscript personalizado)
- CLI:
--rscripto-r - Entorno:
FAUCET_RSCRIPT - Predeterminado:
Rscript
El binario/ejecutable Rscript a utilizar. Esto es útil si necesitas tener varias versiones de R instaladas en tu sistema. Debe ser la ruta completa al binario/ejecutable Rscript o un alias que esté disponible en tu $PATH. Esto también es útil en plataformas como Windows donde el binario/ejecutable Rscript puede no estar disponible en el $PATH.
Quarto (Definir un binario/ejecutable quarto personalizado)
- CLI:
--quartoo-q - Entorno:
FAUCET_QUARTO - Predeterminado:
quarto
El binario/ejecutable quarto a utilizar. Esto es útil si tienes varias versiones de Quarto instaladas o si no está en tu $PATH.
Uv (Definir un binario/ejecutable uv personalizado)
- CLI:
--uv - Entorno:
FAUCET_UV - Predeterminado:
uv
El binario/ejecutable uv a utilizar. Esto es útil si tienes múltiples versiones de uv instaladas, o si no está en el PATH de tu sistema. uv es requerido para ejecutar aplicaciones FastAPI y subcomandos uv.
Log File (Redirigir el registro a un archivo)
- CLI:
--log-fileo-l - Entorno:
FAUCET_LOG_FILE - Predeterminado:
None
Si estableces esta variable, se desactivarán los colores en stderr y se guardará toda la salida en la ruta especificada. Esto añadirá contenido, no sobrescribirá archivos existentes.
Max Log File Size
- CLI:
--max-log-file-sizeo-m - Entorno:
FAUCET_MAX_LOG_FILE_SIZE - Predeterminado:
None
El tamaño máximo del archivo de registro antes de la rotación (p. ej., 10M, 1GB). Requiere que log-file esté configurado.
Logging Level
- Entorno:
FAUCET_LOG - Predeterminado:
INFO - Valores posibles:
ERRORWARNINFODEBUGTRACE
El nivel de registro a utilizar. Esta variable de entorno establece la verbosidad global del registro. Consulta la sección de registro para más información.
Nota: Aunque esta variable de entorno es funcional, las aplicaciones más nuevas podrían preferir un control más granular a través de archivos de configuración de logger dedicados o configuraciones específicas de la biblioteca si están disponibles. Las opciones de CLI --log-file y --max-log-file-size proporcionan control directo sobre el registro basado en archivos.
Shutdown
- CLI:
--shutdown - Entorno:
FAUCET_SHUTDOWN - Predeterminado:
immediate - Valores posibles:
immediategraceful
La estrategia utilizada para apagar faucet. immediate termina cada conexión activa y apaga el proceso. graceful espera a que todas las conexiones se cierren antes de apagarse.
Max Message Size
- CLI:
--max-message-size - Entorno:
FAUCET_MAX_MESSAGE_SIZE - Predeterminado:
None
Tamaño máximo de un mensaje de WebSocket. Esto es útil para la prevención de ataques DDOS. Si no se establece, no hay límite de tamaño.
Telemetría: Cadena de Conexión de PostgreSQL
- CLI:
--pg-con-string - Entorno:
FAUCET_TELEMETRY_POSTGRES_STRING - Predeterminado:
None
Cadena de conexión a una base de datos PostgreSQL para guardar eventos HTTP. Si se proporciona, faucet intentará registrar los eventos HTTP en esta base de datos.
Telemetría: Namespace
- CLI:
--telemetry-namespace - Entorno:
FAUCET_TELEMETRY_NAMESPACE - Predeterminado:
faucet
Espacio de nombres bajo el cual se guardan los eventos HTTP en PostgreSQL.
Telemetría: Versión
- CLI:
--telemetry-version - Entorno:
FAUCET_TELEMETRY_VERSION - Predeterminado:
None
Representa la versión del código fuente del servicio que se está ejecutando. Esto es útil para filtrar datos de telemetría.
Telemetría: Certificado SSL de PostgreSQL
- CLI:
--pg-sslcert - Entorno:
FAUCET_TELEMETRY_POSTGRES_SSLCERT - Predeterminado:
None
Ruta a un archivo de certificado de CA para verificar el servidor PostgreSQL al usar SSL/TLS. Requerido si --pg-sslmode se establece en verify-ca o verify-full. El certificado debe estar en formato PEM o DER.
Telemetría: Modo SSL de PostgreSQL
- CLI:
--pg-sslmode - Entorno:
FAUCET_TELEMETRY_POSTGRES_SSLMODE - Predeterminado:
prefer - Valores posibles:
disablepreferrequireverify-caverify-full
Controla el comportamiento de SSL/TLS para la conexión de PostgreSQL. Si se establece en verify-ca o verify-full, se debe proporcionar un certificado de CA a través de --pg-sslcert o FAUCET_TELEMETRY_POSTGRES_SSLCERT.
Opciones del Subcomando start
Estas opciones son específicas del subcomando start, utilizado para ejecutar un servidor faucet estándar.
Workers
- CLI:
--workerso-w - Entorno:
FAUCET_WORKERS - Predeterminado: El número de CPUs disponibles para el proceso
El número de procesos de trabajo a generar. En una carga de trabajo limitada por la CPU, esto debería establecerse en el número de CPUs disponibles para el proceso. En una carga de trabajo limitada por E/S, esto podría establecerse en un número mayor.
Strategy
- CLI:
--strategyo-s - Entorno:
FAUCET_STRATEGY - Predeterminado:
round-robin - Valores posibles:
round-robinip-hashcookie-hash
La estrategia a utilizar para el balanceo de carga. La estrategia que elijas depende de tu carga de trabajo.
Round Robin
Round robin es una estrategia de balanceo de carga muy ligera y simple. Simplemente distribuye las solicitudes a los workers de manera rotativa. Esta puede ser una buena estrategia para la mayoría de las cargas de trabajo, es muy simple y tiene muy poca sobrecarga.
NO deberías usar round robin si el servidor es con estado (stateful), ya que no garantizará que las solicitudes del mismo cliente se dirijan al mismo worker. Si necesitas un estado persistente, usa IP Hash o Cookie Hash.
Si un worker muere, las solicitudes que se estaban enrutando continuarán hacia el siguiente worker disponible que esté vivo.
IP Hash
IP Hash es una estrategia más compleja que garantiza que las solicitudes del mismo cliente se dirijan al mismo worker. Esto es útil para servidores con estado, como las aplicaciones Shiny. IP Hash se aplica en las aplicaciones Shiny si la estrategia se establece en auto.
Si un worker muere, las solicitudes se retendrán hasta que el worker vuelva a estar en línea. Esto significa que la latencia puede aumentar si un worker muere.
Cookie Hash
Cookie Hash utiliza una cookie para identificar al worker al que se debe enviar la solicitud. Esto es útil para sesiones persistentes (sticky sessions) desde la misma red, incluso si los clientes están detrás de un NAT o comparten la misma dirección IP.
Type (Tipo de servidor)
- CLI:
--typeo-t - Entorno:
FAUCET_TYPE - Predeterminado:
auto - Valores posibles:
autoplumbershinyquarto-shinyfast-api
El tipo de servidor a ejecutar. Se utiliza para determinar la estrategia correcta a usar y cómo generar los workers.
Auto
Auto intentará determinar el tipo de servidor basándose en el contenido del directorio especificado por --dir.
- Si el directorio contiene un archivo
plumber.Roentrypoint.R, se asumirá que es un servidor Plumber. - Si el directorio contiene un archivo
app.R, o ambos archivosserver.Ryui.R, se asumirá que es un servidor Shiny. - Si se proporciona un archivo
.qmda través del argumento--qmd, o siFAUCET_QMDestá establecido, se asumirá que es una aplicación Quarto Shiny. De lo contrario, faucet saldrá con un error.
Plumber
Ejecuta el servidor como una API de Plumber. La estrategia predeterminada es round-robin.
Shiny
Ejecuta el servidor como una aplicación Shiny. La estrategia predeterminada es ip-hash.
Quarto Shiny
Ejecuta el servidor como una aplicación Quarto Shiny. La estrategia predeterminada es ip-hash. Requiere la opción --qmd para especificar el documento Quarto.
FastAPI
Ejecuta el servidor como una aplicación FastAPI. La estrategia predeterminada es round-robin. Esto requiere que uv esté instalado. Faucet buscará un archivo main.py en el directorio especificado y lo servirá.
Directory (Directorio de trabajo)
- CLI:
--diro-d - Entorno:
FAUCET_DIR - Predeterminado:
.
El directorio desde el cual ejecutar el servidor. Este debe ser el directorio que contiene el plumber.R o el contenido de la aplicación Shiny.
App Directory (appDir de Shiny)
- CLI:
--app-diro-a - Entorno:
FAUCET_APP_DIR - Predeterminado:
None
Argumento pasado a appDir al ejecutar aplicaciones Shiny. Esto te permite especificar un subdirectorio dentro de la ruta --dir como la raíz para la aplicación Shiny.
QMD (Documento Quarto)
- CLI:
--qmd - Entorno:
FAUCET_QMD - Predeterminado:
None
Ruta al archivo .qmd de Quarto Shiny. Esto es requerido cuando type se establece en quarto-shiny, o cuando type es auto y tienes la intención de ejecutar una aplicación Quarto Shiny.
Opciones del Subcomando router
Estas opciones son específicas del subcomando router, utilizado para ejecutar faucet en modo router (experimental).
Config File
- CLI:
--confo-c - Entorno:
FAUCET_ROUTER_CONF - Predeterminado:
./frouter.toml
Ruta al archivo de configuración TOML del router.
Subcomando rscript
Este subcomando te permite ejecutar un script de R arbitrario. Cualquier argumento que siga a rscript se pasará directamente al ejecutable Rscript.
Ejemplo: faucet rscript mi_script.R --arg1 valor1
Subcomando uv
Este subcomando te permite ejecutar comandos uv arbitrarios. Esto es particularmente útil para ejecutar scripts de Python o gestionar entornos de Python. Cualquier argumento que siga a uv se pasará directamente al ejecutable uv.
Ejemplo: faucet uv run mi_script.py o faucet uv pip install pandas