Comandos Nativos
Comandos Nativos de Orionis Framework
Sección titulada «Comandos Nativos de Orionis Framework»Orionis Framework incluye una consola de comandos pensada para acelerar tareas de desarrollo, mantenimiento y operación. Esta guía reúne los comandos nativos más importantes, su propósito y ejemplos de uso para que puedas incorporarlos rápidamente en tu flujo de trabajo.
En esta sección encontrarás:
- Qué son los comandos nativos y cuándo conviene utilizarlos.
- Sintaxis general de ejecución.
- Detalle de comandos clave del framework.
- Recomendaciones para desarrollo y producción.
¿Qué son los comandos nativos?
Sección titulada «¿Qué son los comandos nativos?»Los comandos nativos son utilidades integradas en Orionis Framework que puedes ejecutar desde la terminal para realizar acciones frecuentes sin escribir scripts adicionales.
Permiten, por ejemplo:
- Inspeccionar el estado del framework.
- Listar y ejecutar tareas programadas.
- Generar estructuras base para extender funcionalidades.
- Iniciar el servidor de desarrollo.
- Ejecutar pruebas automatizadas.
Sintaxis general
Sección titulada «Sintaxis general»La forma habitual de ejecutar un comando es:
python reactor <comando> <argumentos/opciones>También puedes usar la bandera -B para evitar la generación de archivos .pyc:
python -B reactor <comando> <argumentos/opciones>Recomendación de uso de -B
Sección titulada «Recomendación de uso de -B»Durante desarrollo, usar python -B ayuda a mantener el proyecto más limpio y reduce efectos no deseados por bytecode antiguo.
En producción, evalúa tu estrategia de despliegue:
- Si tu pipeline prepara imágenes limpias (por ejemplo, Docker), puedes limpiar cachés en el build.
- Si priorizas rendimiento de arranque, puedes permitir bytecode generado en tiempo de ejecución.
Resumen rápido de comandos
Sección titulada «Resumen rápido de comandos»list: Muestra todos los comandos disponibles.about: Muestra información de versión y entorno.optimize:clear: Limpia bytecode y artefactos de optimización.schedule:list: Lista tareas programadas y su configuración.schedule:work: Ejecuta y mantiene activo el scheduler.make:command: Genera un comando personalizado.make:provider: Genera un proveedor de servicios.make:task:listener: Genera un listener para eventos de tareas.serve: Inicia servidor de desarrollo.test: Ejecuta pruebas del proyecto.
Comando list
Sección titulada «Comando list»Propósito
Muestra todos los comandos disponibles, tanto nativos como personalizados.
Uso
python -B reactor listCuándo usarlo
- Al iniciar en un proyecto existente.
- Después de crear comandos personalizados.
- Para verificar la firma exacta de un comando antes de ejecutarlo.
Comando about
Sección titulada «Comando about»Propósito
Entrega información de la versión de Orionis Framework y datos del entorno de ejecución.
Uso
python -B reactor aboutCuándo usarlo
- Para validar la versión instalada.
- Para reportar información al equipo durante soporte técnico.
- Para confirmar contexto antes de depurar incidencias.
Comando optimize:clear
Sección titulada «Comando optimize:clear»Propósito
Elimina archivos de bytecode y artefactos de optimización generados durante el bootstrapping de la aplicación.
Uso
python -B reactor optimize:clearCuándo usarlo
- Después de cambios relevantes de configuración.
- Al detectar comportamientos inconsistentes tras refactors.
- En procesos de build o despliegue para garantizar un arranque limpio.
Nota operativa
En entornos de producción no suele ser necesario ejecutarlo en cada inicio. Lo recomendable es incorporarlo en el pipeline cuando buscas un despliegue reproducible y limpio.
Comando schedule:list
Sección titulada «Comando schedule:list»Propósito
Muestra una vista detallada de todas las tareas programadas registradas en el proyecto.
Uso
python -B reactor schedule:listInformación que muestra
Signature: Nombre de la tarea.Arguments: Argumentos configurados.Purpose: Propósito descriptivo.Random Delay (Calculated Result): Delay aleatorio calculado.Coalesce: Estado de coalescencia.Max Instances: Límite de instancias simultáneas.Misfire Grace Time: Margen de tolerancia para misfire.Start Date - End Date: Rango de fechas de ejecución.Details: Frecuencia o intervalo de ejecución.
Cuándo usarlo
- Antes de pasar a producción.
- Durante auditorías operativas.
- Para validar que una nueva tarea fue registrada correctamente.
Comando schedule:work
Sección titulada «Comando schedule:work»Propósito
Inicia el proceso que mantiene activo el scheduler y ejecuta tareas en segundo plano según su programación.
Uso
python -B reactor schedule:workComportamiento esperado
- Lee las tareas definidas en
app\console\scheduler.py. - Evalúa tiempos de ejecución y dispara tareas cuando corresponde.
- Publica eventos asociados para que los listeners respondan.
- Mantiene un proceso persistente para tareas recurrentes.
Recomendaciones por entorno
En desarrollo:
- Ejecuta este comando en una terminal separada.
- Déjalo corriendo mientras pruebas tareas periódicas.
En producción:
- Gestiona el proceso con herramientas del sistema operativo.
- Asegura reinicio automático ante fallos.
En Unix:
- Puedes usar
systemd,supervisordo estrategias equivalentes.
En Windows:
- Puedes usar el Programador de tareas o un servicio dedicado.
Ejecución directa sin scheduler
Si no necesitas scheduler y solo quieres ejecutar un comando concreto en intervalos, puedes apoyarte en herramientas del sistema:
- Linux:
cron. - Windows: Programador de tareas.
Ejemplo en Linux con cron:
- Abre el editor de crontab:
crontab -e- Agrega una regla para ejecutar un comando cada 5 minutos:
*/5 * * * * cd /ruta/a/tu/proyecto && python -B reactor <signature>- Guarda los cambios y verifica que la tarea esté registrada:
crontab -lComando objetivo:
python -B reactor <signature>Comando make:command
Sección titulada «Comando make:command»Propósito
Genera la estructura base de un comando personalizado para extender la consola de tu proyecto.
Uso
python -B reactor make:command <name_of_command> [--options]Opciones comunes
--signature: Firma con la que invocarás el comando.--description: Descripción visible enreactor list.
Ejemplo
python -B reactor make:command clean_cache --signature="cache:clean" --description="Limpia cache de aplicacion"Buena práctica
Usa firmas consistentes con formato modulo:accion para facilitar descubrimiento y mantenimiento.
Comando make:provider
Sección titulada «Comando make:provider»Propósito
Genera la estructura base de un proveedor de servicios (service provider) para registrar bindings, configuraciones o lógica de arranque en el contenedor de servicios de tu aplicación.
Uso
python -B reactor make:provider <name> [--deferred]Argumentos y opciones
name(obligatorio): Nombre del archivo y la clase del proveedor. Debe seguir el formatosnake_case(solo letras minúsculas, números y guiones bajos, comenzando con una letra).--deferred(opcional): Si se indica, el proveedor será diferido y solo se cargará cuando sea necesario, optimizando el rendimiento de arranque.
Ejemplos
Crear un proveedor estándar (eager):
python -B reactor make:provider cacheCrear un proveedor diferido:
python -B reactor make:provider billing --deferredCrear un proveedor con nombre compuesto:
python -B reactor make:provider payment_gateway --deferredComportamiento esperado
- Valida que el argumento
namecumpla el formatosnake_case. - Genera el nombre de clase capitalizando cada segmento separado por guiones bajos y agregando el sufijo
Providersi no lo tiene (por ejemplo,payment_gateway→PaymentGatewayProvider). - Crea el archivo en el directorio
app/providers/con el sufijo_provider.pysi no lo incluye (por ejemplo,cache→cache_provider.py). - Si el archivo ya existe, informa el error sin sobrescribirlo.
Proveedores eager vs. diferidos
- Eager (por defecto): El proveedor se carga y registra durante el arranque de la aplicación. Ideal para servicios que necesitan estar disponibles desde el inicio.
- Diferido (
--deferred): El proveedor se carga solo cuando el contenedor resuelve alguno de los bindings que proporciona. Útil para servicios pesados o poco frecuentes, ya que reduce el tiempo de arranque.
Buena práctica
Nombra tus proveedores de forma descriptiva y alineada con el módulo o funcionalidad que registran. Usa el flag --deferred para proveedores que encapsulan integraciones externas o servicios de uso esporádico.
Comando make:task:listener
Sección titulada «Comando make:task:listener»Propósito
Genera un listener para reaccionar a eventos del ciclo de vida de tareas programadas.
Uso
python -B reactor make:task:listener <name_of_listener>Ubicación y relación con scheduler
- Los listeners se ubican en
app\console\listeners. - Se conectan a tareas definidas en
app\console\scheduler.py, dentro del métodotasks.
Eventos de tarea habituales
onTaskAdded: Se agrega una tarea al scheduler.onTaskRemoved: Se elimina una tarea.onTaskExecuted: La tarea termina correctamente.onTaskError: Ocurre un error al ejecutar una tarea.onTaskMissed: La tarea no se ejecuta en el instante previsto.onTaskSubmitted: La tarea se envía para ejecución.onTaskMaxInstances: Se alcanza el máximo de instancias permitidas.
Cuándo conviene usar listeners
- Para registrar auditoría operacional.
- Para emitir notificaciones tras ejecuciones críticas.
- Para activar compensaciones o flujos alternos ante fallos.
Comando serve
Sección titulada «Comando serve»Propósito
Inicia el servidor de desarrollo para ejecutar la aplicación localmente.
Uso básico
python -B reactor serveOpciones
--interface: Define la interfaz de servidor.--port: Establece el puerto de escucha.--log: Activa logs detallados del servidor.
Valores frecuentes
--interface="rsgi": interfaz predeterminada.--interface="asgi": útil para servidores ASGI compatibles.--port="8000": puerto por defecto.
Ejemplos
python -B reactor serve --interface="rsgi" --port="8000" --logpython -B reactor serve --interface="asgi" --port="8080" --logRecomendación
Activa --log cuando estés depurando problemas de arranque, puertos ocupados o comportamiento del servidor web.
Comando test
Sección titulada «Comando test»Propósito
Ejecuta pruebas del proyecto para validar el comportamiento de la aplicación.
Uso
python -B testOpciones disponibles
--verbosity, -v: Nivel de detalle en salida.--fail-fast, -f: Detiene ejecución al primer fallo (1) o continúa (0).--start-dir, -s: Directorio de búsqueda de pruebas.--file-pattern: Patrón de archivos de prueba.--method-pattern: Patrón de métodos de prueba.
Valores por defecto
- Verbosidad:
2. - Fail fast:
0. - Directorio de pruebas:
tests. - Patrón de archivos:
test_*.py. - Patrón de métodos:
test*.
Ejemplos útiles
Ejecutar todas las pruebas con salida detallada:
python -B test -v 2Detener en el primer fallo:
python -B test -f 1Ejecutar pruebas desde otra carpeta:
python -B test --start-dir="custom_tests"Filtrar por método:
python -B test --method-pattern="test_auth*"Flujo recomendado de trabajo
Sección titulada «Flujo recomendado de trabajo»Para una rutina de desarrollo más estable, puedes seguir este orden:
- Ejecuta
python -B reactor listpara validar comandos disponibles. - Si cambiaste configuración o bootstrap, ejecuta
python -B reactor optimize:clear. - Levanta aplicación con
python -B reactor serve. - Si usas tareas programadas, inicia
python -B reactor schedule:worken otra terminal. - Ejecuta
python -B testantes de integrar cambios.
Buenas prácticas generales
Sección titulada «Buenas prácticas generales»- Mantén firmas de comandos personalizadas claras y consistentes.
- Documenta siempre
--descriptional crear comandos nuevos. - Revisa periódicamente
schedule:listpara detectar configuraciones inválidas. - Registra eventos críticos mediante listeners en tareas de alto impacto.
- Integra la ejecución de pruebas en tu pipeline de CI/CD.
Solución de problemas frecuentes
Sección titulada «Solución de problemas frecuentes»Un comando no aparece en list
- Verifica que el comando esté correctamente registrado.
- Revisa errores de importación en módulos de consola.
- Confirma que estás usando el entorno de Python correcto.
- Ejecuta
python -B reactor optimize:clearpara limpiar bytecode obsoleto.
Una tarea programada no se ejecuta
- Confirma que
schedule:workesté activo. - Revisa restricciones como
start_date,end_dateomax_instances. - Valida logs de listeners para identificar fallos.
- Valida el log general de Orionis Framework para errores relacionados.
Las pruebas no detectan casos esperados
- Revisa
--start-diry--file-pattern. - Verifica que los métodos cumplan el patrón
test*. - Ajusta la verbosidad con
-vpara mayor detalle de diagnóstico.
Los comandos nativos de Orionis Framework son una capa operativa clave para desarrollar con mayor velocidad y control. Dominar estos comandos te permitirá automatizar tareas, mejorar la observabilidad del sistema y mantener una operación más predecible en desarrollo y producción.