Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

224
Views
¿Se eliminarán los trabajos cron dinámicos de Nest.js después de reiniciar o apagar?

Así que desarrollé un sistema con Nest.js que puede crear un cronjob dinámico a partir de la entrada de un usuario en la aplicación frontend, almaceno estos datos en mi base de datos y al mismo tiempo creo el trabajo en el servidor con el módulo de programación dinámica API . Hoy me preguntaba qué pasaría con mis cronjobs si mi servidor se apagara o si se reiniciara solo, dado que mis trabajos no son declarativos y se crean en tiempo de ejecución, creo que tal vez cuando mi servidor se inicie, ¿debería crear los cronjobs nuevamente? No estoy seguro de si esto se almacena en la memoria o algo así, ya que no está en la documentación.

Mi preocupación, en pocas palabras, es:

¿Debo volver a crear mis trabajos usando la información de la base de datos una vez que el servidor se inicia solo? ¿Por qué sí o por qué no?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Una vez que el servidor se reinicie, deberá reiniciar sus tareas CRON.

La razón de esto es que su aplicación NestJS realmente no agrega expresiones CRON a un crontab en la máquina, sino que programa y ejecuta estas tareas en un ejecutor de tareas compatible con expresiones CRON (ejemplo de paquete: node-cron ) Una vez que el servidor se detiene, el programador (que se ejecuta en el mismo proceso) también se detiene.

Mencionó que ya almacena las tareas en una base de datos, por lo que debería poder obtener la información que necesita para recrear la tarea en el inicio del servidor.

Supongo que tiene un Service que maneja tareas CRON y tiene acceso a la base de datos. De lo contrario, puede crear uno dedicado

Puede modificarlo para implementar la interfaz OnModuleInit y ejecutar la lógica que leería todas las tareas existentes que deberían ejecutarse e iniciarlas:

 @Injectable() class CronService implements OnModuleInit { constructor(private readonly cronRepository: CronRepository) {} /* ... CRON IMPLEMENTATION ... */ private async restartSavedCronTasks(): Promise<void> { // get date from DB and start all relevant tasks } async onModuleInit: Promise<void> { await this.restartSavedCronTasks(); } }
about 4 years ago · Santiago Trujillo Report

0

La respuesta es sí, debe volver a crear los trabajos cron después de que se reinicie el servidor. Lo mejor es que una vez que el usuario crea el trabajo cron, lo almacenará en la base de datos o usará la base de datos que ya usa para Frontend.

about 4 years ago · Santiago Trujillo Report

0

En general, podría tener dos niveles de persistencia de estos datos en caso de necesidad.

escenario 1

Muy rara vez reinicia sus servidores. En este caso, almacene en algo persistente como un archivo json en un depósito s3 (no público) o en una base de datos sql o mongo si la tiene conectada.

Vuelva a crear los trabajos cron "no controlados" o relevantes en el calentamiento del servidor.

Escenario 2

A menudo reinicia sus servidores/servicios. En este caso, tal vez almacene en una base de datos en memoria como Redis, así como en un tipo más persistente (en caso de que su base de datos Redis se caiga y necesite volver a llenarla, siempre que estos datos sean importantes).

Vuelva a crear los trabajos cron "no controlados" o relevantes en el calentamiento del servidor.

Almacenar en Redis en general en lugar de almacenar en memoria en una instancia de servidor específica también permitirá que su arquitectura general sea más escalable ya que un servidor diferente también puede leer desde Redis (la misma "fuente de la verdad")

Espero que esto te ayude a planificar tu arquitectura en consecuencia :)

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!