tengo algunas direcciones web en mi base de datos, necesito verificar estas direcciones en busca de algo y actualizarlas en la base de datos en consecuencia ... necesito hacer esto una y otra vez
aquí está la versión simplificada de mi código, tengo dos funciones
1 - init -> lee una fila de dirección de db, pasa la dirección a la segunda función para verificar y actualizar el resultado en db para esa dirección
2 - check_address -> verificar esa dirección en el navegador y devolver el resultado
aquí está la versión simplificada de mi código
async function init() { try { let address = 'select * from addressess order by updated_at asc limit 1'; let result = await check_address(address); await address.update({result : result }); } catch(e){} setTimeout( ()=> init() , 5000 ); } async function check_address( address ) { var browser = await puppeteer.launch(); let result = await 'open a tab , go to the address and cehck'; // close the browser return result ; } init();Siento que abrir y cerrar el navegador para cada dirección consume mucho tiempo/recursos, así que pensé que tal vez podría tener un navegador global abierto en todo momento y simplemente abrir y cerrar pestañas en el navegador o tal vez incluso usar la misma pestaña... algo como
let globalBrowser = false ; async function check_address( address ) { if(!globalBrowser) { globalBrowser = await puppeteer.launch(); globalBrowser._process.once('close', () => { globalBrowser = false; }); } let result = await 'open a tab , go to the address and cehck'; return result ; }pero no estoy seguro de si tener un navegador abierto en todo momento está bien, o este flujo generalmente es una buena idea
tengo una experiencia muy limitada con titiritero, me encantaría recibir información de alguien con más experiencia y conocimiento de la aplicación titiritero de larga duración
De hecho, abrir y cerrar el navegador tiene un rendimiento pesado. Si su secuencia de comandos se ejecuta en un servidor, puede abrir el navegador inicialmente y hacer un trabajo cron (@package node-cron ) cada X horas en la función check_adress .
En lugar de cerrar el navegador, simplemente puede cerrar la página actual a través de:
await page.close();