Ejemplos e implementación del paquete cron para Golang (Go)

Publicado por parzibyte en

Demostración de cron en Go - Múltiples rutinas ejecutándose en paralelo

Hoy vengo a mostrar cómo usar el maravilloso paquete de cron para Go. Ya todos sabemos qué es cron, que en términos simples permite ejecutar acciones cada determinado tiempo.

Pues bien, hoy veremos cómo usar el cron pero directamente programado en Go; sin ninguna dependencia más que del paquete y del propio lenguaje. Veremos algunos ejemplos.

Demostración de cron en Go - Múltiples rutinas ejecutándose en paralelo

Demostración de cron en Go – Múltiples rutinas ejecutándose en paralelo

Nota: si no sabes qué es cron, mira la wikipedia.

Instalar paquete de cron en Go

Primero instala y configura Go (si estás en Linux mira esto) y luego instala el paquete que se encuentra en github.com/robfig/cron con el siguiente comando:

go get github.com/robfig/cron

Espera a que termine y ya estamos preparados. Recuerda que para importar se usa:

import "github.com/robfig/cron"

Primer vistazo al cron de Go

Se crea un nuevo “cron” con:

c := cron.New()

Después, se pueden agregar funciones que se van a ejecutar cuando indiquemos; para esto se llama a c.AddFunc. Como primer argumento se le pasa la expresión cron y como segundo una función.

Ya veremos los ejemplos más abajo. Por cierto, una vez que ya hemos agregado todas las tareas, para iniciar el cron se llama a:

c.Start()

Para detenerlas o detener el cron se llama a:

c.Stop()

Finalmente, es posible agregar tareas incluso después de llamar a Start, no hay problema con ello.

Por cierto, aquí está la documentación oficial.

Ejemplos simple de cron con Go

Aquí está un ejemplo sencillo y rápido que funciona como referencia:

Si lo compilas y/o ejecutas, en la consola se estará imprimiendo el mensaje cada segundo; pero eso no es todo, hay magia detrás de ello.

Eso que estás viendo se está ejecutando en otro hilo, y si agregaras más funciones entonces todas se ejecutarían en paralelo; dejando el código principal intacto.

Además, esto fue para ejemplos rápidos, pero todos sabemos que cron podría ejecutar determinada acción cada mes, año, todos los martes, todos los miércoles de enero del 2020 y miles de combinaciones más.

Ejemplos de uso de cron y Go

Una vez que ya vimos el ejemplo básico, veamos uno más avanzado que tendrá la salida de la imagen de portada (la del inicio):

En el ejemplo usamos a cron para agregar múltiples tareas; aquí la concurrencia no importa tanto, sino la ejecución puntual de las tareas. Es decir, cron funciona de maravilla.

Conclusiones

Cabe mencionar que se pueden agregar infinitas tareas y que el select{} al final solamente funciona para pausar el programa; pero no sería necesario para programas como el del servidor web.

Por cierto, esta implementación de cron en Go utiliza hasta segundos como medida más precisa; y el estándar en Linux utiliza minutos. En resumen, se podría decir que este cron tiene mayor granularidad.

¿Te confundes al trabajar con cron? yo también, pero siempre recurro a esta página para guiarme; eso sí, la página no maneja segundos pero no importa; pues sirve como guía.

Como siempre, te invito a ver más tutoriales de Go.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: