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

227
Views
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 answers
Answer question

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 Report

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 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!