Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda