Puestas en producción sencillas para vagos en R
- fjroar
- 11 nov 2023
- 3 Min. de lectura
Esta entrada que denomino “Puestas en producción sencillas para vagos R”, no es para menospreciar a quién desee ponerla en práctica (yo ya lo llevo haciendo bastante tiempo …, aunque no soy el mejor ejemplo de no vago jjj) sino que es para informar a muchos estadísticos y DS (fundamentalmente) que me he ido encontrando por ahí, que es posible automatizar de modo sencillo procesos y que no es que podamos, sino que DEBEMOS de ser perfectamente autónomos y tener un cierto grado técnico para determinados fines y no estar requiriendo de las áreas de IT constantemente desarrollo de procesos u otras choradas.
En un anterior post (primera parte de este):
Se trataba de cómo poner modelos de producción en R, lo había hecho todo a partir de un fichero ejecutable .bak que tras ser pulsado cuando el usuario quisiese, le permitiría disparar todo un conjunto de procesos ordenados y orquestados por un programa main.R
Sin embargo, aún puede ser molesto el tener que sencillamente tocar el botón ya que todos sabemos que en nuestro día a día, nos llegan un montón de cosas y además, está el tema de las vacaciones que hace que nos olvidemos de hasta la contraseña para entrar en el Windows, cuanto más, que hay que tocar al dichoso botón.
Pues bien, cuando en una empresa no se goza de plataformas muy avanzadas o hay una enorme burocracia para poner procesos que deberían ser triviales en producción, siempre cabe hacer uso de una calendarización de tareas que casi todos los sistemas operativos permiten, siendo el caso de Windows el siguiente:

Desde luego, sin tener ni idea de programación, es posible indicarle a Windows que haga el trabajo por nosotros y es más, no es necesario ni tan siquiera crear el anteriormente citado fichero .bak sino que directamente, pulsando en la Acción de Crear tarea … que está en el lado derecho de la anterior aplicación (que existe en todos los Windows) y que permite ir creando la tarea dando una enorme cantidad de detalles sobre el modo de ejecución:

Además, entre las tareas más usuales, se encuentra la ejecución de un programa, que tras pulsar Siguiente nos lleva a las siguientes pantallas, donde en la de la izquierda se nos pide que se elija el programa a ejecutar:

Por tanto, con estos sencillos pasos se puede hacer que se ejecute el proceso llamando al programa main.R directamente que estará en la correspondiente carpeta y que en el caso del anteriormente citado proceso de preventiva, tendría el siguiente contenido:

De este modo, se podría directamente eliminar execution y realizar la asociación para la ejecución del diagrama siguiente que ya se comentó en un anterior post:

Además, y lo mejor de todo es que la ejecución por esta vía, genera un log directamente que nos informa de cualquier incidencia que pudiera haber ocurrido.
Por si fuera poco, además R ofrece un librería que permite hacer todo lo anterior de un modo aún mucho más directo. En el caso de Windows (existe otra para esos amantes del Linux …) la librería es taskscheduleR donde podría programarse sencillamente un proceso diario, sin tener que abrir el taskmanager tal como sigue:
library(taskscheduleR)
taskscheduler_create(taskname = “202311_EjecucionPreventiva”,
rscript = “ ../main.R”,
schedule = “DAILY”,
starttime = “10:35”,
startdate = format(Sys.Date(), “%d/%m/%Y”))
Se observa por tanto que indicando en el parámetro rscript la correspondiente ruta, el proceso ya estaría debidamente enrutado.
Finalmente, algunas conclusiones e indicaciones:
Lo que se ha descrito tanto en el anterior post citado como en este es un modo de poner procesos en producción en R de modo sencillo y dependientes eso sí, de la máquina donde está R instalado. Hay que tener garantizado, por tanto, para que todo vaya bien que la máquina estará conectada a la red de la empresa y es por tanto conveniente que esté encendida, por tanto, este método es ideal para servidores on premise y sólo en el caso de que sean procesos que nos interese ejecutar a modo personal, la máquina de procesamiento será lógicamente nuestro propio PC.
Este método sirve prácticamente para cualquier tipo de lenguaje tipo open source como Python, sin embargo, para los amantes del software propietario tengo que decirles que pueden tener bastantes problemas si van por este camino y es algo más complejo, es lo que tiene pagar tecnologías que esclavizan más que liberan.
Como se ha observado, es factible con pocos recursos crear agentes totalmente mecanizados que, puedan llegar incluso a ejecutar modelos dinámicamente y servir datos en distintos formatos, alimentar una base de datos, etc.
Finalmente espero que haya servido de ayuda estos 2 post y que os permita eludir el paso, a veces necesaria y excesivamente burocratizado de tener que pasar por IT cuando es algo sencillo a ejecutar de modo batch. Dejemos a los de IT trabajar y propongámosle en todo caso, ejercicios más complejos que requieran procesos tipo real-time.
コメント