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

226
Visualizações
Firebase Cloud Functions (tabla de clasificación y tiempo de espera de más de 10 000 usuarios)

Mi aplicación tiene una tabla de clasificación que se actualiza diariamente con una función de Firebase. Ahora tengo más de 20.000 usuarios y la función se agota siempre (ya durante 550 segundos).

 exports.scheduledFunction = functions.pubsub.schedule('every day 00:00').timeZone('Europe/Vienna').onRun( async (contextm) => { functions.logger.log('Positioning stated... (v.1.0.5)'); batch = db.batch(); const allUsers = await db.collection('users').orderBy('coins', 'desc').get(); let i = 0; for (const doc of allUsers.docs) { batch.update(doc.ref, "rank", i); i += 1; if(i % 499 == 0) { await batch.commit(); batch = db.batch(); } } const writeResult = await batch.commit(); functions.logger.log('Updating Leaderboard'); return null; });

¿Cómo optimizar en términos de rendimiento?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No hay nada que puedas hacer para mejorar la situación en términos de rendimiento. La velocidad de ejecución de su código depende del rendimiento de Firestore. Las operaciones de Firestore siempre tardarán lo que tarden, no se pueden acelerar.

Las únicas alternativas que tienes dentro de GCP son:

  1. Divida el problema en problemas más pequeños y resuelva cada problema más pequeño en su propia función de invocación.
  2. Use un producto de backend diferente que no sea Cloud Functions (ya que no está diseñado para operaciones de ejecución prolongada).

Para el n.° 1, puede activar otras funciones pubsub para manejar lotes de usuarios de forma asíncrona desde la función principal. Tendrá que empaquetar una carga útil de datos para que funcione la función de delegado, de modo que no tenga que repetir la primera consulta. Cada invocación de delegado puede actualizar los documentos en su propia cantidad de tiempo más predecible (ya que limitará el tamaño de cada lote).

Para el n.° 2, podría usar Cloud Run, que le brinda hasta 60 minutos de tiempo por invocación. O podría configurar una instancia de Compute Engine, que se ejecutaría las 24 horas del día, los 7 días de la semana, y escribiría código para invocar un punto final expuesto en su función programada.

about 4 years ago · Juan Pablo Isaza Relatório

0

Si maximizó sus opciones de tiempo de ejecución a 540 segundos y 8 GB de memoria, su única solución (puedo recomendarla) sería ejecutar ese código en un backend confiable con el SDK de administrador de Firebase. Así es como recalculamos todos los días nuestras existencias en almacén. Tarda unos 30 minutos, por lo que no se puede ejecutar en una función de nube de Firebase.

about 4 years ago · Juan Pablo Isaza 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