Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

108
Vistas
Funciones en la nube - Usar variables globales

Tengo una función cloudFunctionCall en mi configuración de función de nube que se invoca en cada llamada de función de nube.

 import * as functions from "firebase-functions"; const mysql = require("mysql"); function cloudFunctionCall(asyncFunc) { return functions .region(region) .https.onCall(async (data: any, context: any) => { try { const pool = mysql.createPool(getConfig(context)); const result = await asyncFunc(data, pool); pool.end(); res.send(result); } catch (err) { log("A promise failed to resolve", err); res.status(500).send(err); } }); } export const func1 = cloudFunctionCall(_func1); export const func2 = cloudFunctionCall(_func2);

context y, por lo tanto pool define a qué base de datos debe comunicarse una función invocada, que podría cambiar en cada llamada a la función en la nube. Ahora quiero evitar pasar pool como parámetro a asyncFunc ya que en realidad no es necesario para la lógica de la función y hace que las funciones sean más detalladas.

Ahora mi pregunta: ¿Es seguro definir el pool como una variable global que se actualiza en cada llamada de función en la nube como la siguiente?

 //... let pool; function cloudFunctionCall(asyncFunc) { return functions .region(region) .https.onCall(async (data: any, context: any) => { try { pool = mysql.createPool(getConfig(context)); const result = await asyncFunc(data, pool); //...

Entiendo que cada función exportada está alojada en su propio entorno, pero ¿qué pasaría si func1 se ejecutara dos veces en rápida sucesión en diferentes bases de datos? ¿Podría suceder que la segunda invocación sobrescriba el pool establecido por la primera invocación para que la última se ejecute en la base de datos incorrecta?

Si es así, ¿hay otra forma de evitar pasar el pool como parámetro?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Las invocaciones de Cloud Function se ejecutan en estricto aislamiento entre sí: cada contenedor solo tendrá una ejecución a la vez. Por lo tanto, no hay posibilidad de que las invocaciones de funciones sobrescriban el valor de su global entre sí.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda