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

426
Visualizações
¿Cómo evitar la fuga de memoria al usar pub sub para llamar a la función?

Me quedé con el problema de rendimiento al usar pubsub para activar la función.

 //this will call on index.ts export function downloadService() { // References an existing subscription const subscription = pubsub.subscription("DOWNLOAD-sub"); // Create an event handler to handle messages // let messageCount = 0; const messageHandler = async (message : any) => { console.log(`Received message ${message.id}:`); console.log(`\tData: ${message.data}`); console.log(`\tAttributes: ${message.attributes.type}`); // "Ack" (acknowledge receipt of) the message message.ack(); await exportExcel(message);//my function // messageCount += 1; }; // Listen for new messages until timeout is hit subscription.on("message", messageHandler); } async function exportExcel(message : any) { //get data from database const movies = await Sales.findAll({ attributes: [ "SALES_STORE", "SALES_CTRNO", "SALES_TRANSNO", "SALES_STATUS", ], raw: true, }); ... processing to excel// 800k rows ... bucket.upload to gcs }

La función anterior funciona bien si activé SOLO un mensaje pubsub. Sin embargo, la función tendrá un problema de fuga de memoria o un problema de tiempo de espera de conexión a la base de datos si activé muchos mensajes pubsub en un corto período de tiempo.

El problema que encontré es que el primer procesamiento aún no ha terminado, pero otras solicitudes de pubsub llamarán directamente a la función nuevamente y procesarán al mismo tiempo.

No tengo idea de cómo resolver esto, pero estaba pensando en implementar el trabajador de la cola o la tarea de la nube de Google resolverá el problema.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Como mencionó @chovy en los comentarios, es necesario poner en cola las llamadas a la función excelExport ya que la ejecución de la función no se mantiene al día con la tasa de invocación. Uno de los módulos que se pueden usar para poner en cola las llamadas a funciones es async .

Como alternativa, puede emplear funciones de control de flujo en el lado del suscriptor. Las canalizaciones de datos a menudo reciben picos esporádicos en el tráfico publicado que pueden abrumar a los suscriptores en un esfuerzo por ponerse al día. La respuesta habitual al alto rendimiento publicado en una suscripción sería escalar automáticamente de forma dinámica los recursos del suscriptor para consumir más mensajes. Sin embargo, esto puede generar costos no deseados, por ejemplo, es posible que deba usar más máquinas virtuales, lo que puede generar una planificación de capacidad adicional. Las funciones de control de flujo en el lado del suscriptor pueden ayudar a controlar el comportamiento no saludable de estas tareas en la tubería al permitir que el suscriptor regule la velocidad a la que se ingieren los mensajes. Consulte este blog para obtener más información sobre las funciones de control de flujo.

over 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