?>
Proporciona una forma de monitorear el estado de las acciones enviadas a una sesión de CAS, lo cual es crucial para la gestión de trabajos asíncronos y el seguimiento del progreso de tareas de larga duración. Permite a los administradores y usuarios verificar si una acción está en ejecución, completada, fallida o en otro estado, utilizando el identificador único (UUID) de la sesión.
| Parámetro | Descripción |
|---|---|
| uuid | Especifica el identificador universal único (UUID) de la sesión de la cual se desea obtener el estado de la acción. Este UUID es esencial para dirigirse a la sesión correcta, especialmente en un entorno multiusuario donde pueden coexistir múltiples sesiones. |
Para usar `actionstatus`, primero debemos tener una acción en ejecución. Este código carga la tabla `iris` en la caslib `CASUSER` para que podamos ejecutar una acción sobre ella y luego verificar su estado.
proc cas;
session casauto;
table.loadTable / caslib='CASUSER' path='iris.sashdat' casout={name='iris', replace=true};
quit;Este ejemplo muestra cómo obtener el estado de las acciones para una sesión específica. Primero, usamos la acción `listSessions` para obtener el UUID de las sesiones activas. Luego, usamos ese UUID en la acción `actionstatus`.
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | /* Paso 1: Listar sesiones para obtener un UUID */ |
| 4 | SESSION.listSessions RESULT=r; |
| 5 | uuid_sesion = r.SESSION[1]['UUID']; |
| 6 | PRINT 'UUID de la sesión a verificar: ' uuid_sesion; |
| 7 | |
| 8 | /* Paso 2: Usar el UUID para verificar el estado de la acción */ |
| 9 | SESSION.actionStatus / uuid=uuid_sesion; |
| 10 | QUIT; |
Este es un escenario más realista donde se inicia una tarea de larga duración (simulada aquí con la acción `builtins.sleep`) de forma asíncrona. Obtenemos el ID del trabajo y luego usamos `actionstatus` para verificar su progreso sin bloquear la sesión principal.
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | |
| 4 | /* Iniciar una acción de 'sleep' de 10 segundos de forma asíncrona */ |
| 5 | async 'mi_trabajo', BUILTINS.sleep / seconds=10; |
| 6 | |
| 7 | /* Obtener el UUID de la sesión actual */ |
| 8 | SESSION.sessionId RESULT=r_sess; |
| 9 | uuid_actual = r_sess.SESSION; |
| 10 | |
| 11 | /* Verificar el estado de la acción usando el UUID de la sesión */ |
| 12 | /* La salida mostrará la acción 'sleep' en estado 'En ejecución' */ |
| 13 | SESSION.actionStatus / uuid=uuid_actual; |
| 14 | |
| 15 | /* Esperar a que la acción termine */ |
| 16 | waitfor 'mi_trabajo'; |
| 17 | |
| 18 | /* Verificar el estado de nuevo, ahora debería estar 'Completada' */ |
| 19 | PRINT 'Verificando el estado después de la finalización:'; |
| 20 | SESSION.actionStatus / uuid=uuid_actual; |
| 21 | QUIT; |
Un banco necesita ejecutar un modelo de machine learning para puntuar el riesgo de crédito de miles de clientes. El proceso es largo y se ejecuta de forma asíncrona para no bloq...
Un equipo de ingeniería de datos necesita cargar varias tablas grandes a CAS. Para acelerar el proceso, inician múltiples trabajos de carga de forma asíncrona. Necesitan un pane...
Un administrador de SAS Viya necesita diagnosticar por qué el trabajo de un usuario ha fallado. El administrador, con los permisos adecuados, debe poder inspeccionar el estado d...