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

207
Views
Titiritero obtiene el error 503 cuando se implementa pero no localmente

Estoy usando titiritero en Node para tomar una captura de pantalla de un dominio, pero tengo algunos problemas inconsistentes.

Las cosas funcionan bien cuando ejecuto el código localmente, pero cuando lo tengo implementado en Heroku obtendré un 503 (servicio no disponible) 8/10 veces cuando pruebo las cosas. No estoy seguro de por qué funcionará esas 2/10 veces.

Tengo los complementos en Heroku y he intentado restablecerlos para asegurarme de que se carguen en el orden correcto, como han mencionado algunas soluciones. También intenté cambiar la configuración dentro de la función titiritero, como las que se muestran aquí y tener 'sin cabeza: verdadero'

Estoy enviando la imagen como una cadena base64 para luego mostrarla en la interfaz.

Aquí está mi código de función, ruta api y solicitud de interfaz:

Código de función:

 async function captureScreenshot(domain) { try { const browser = await puppeteer.launch({ args: [ "--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage", ], }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 1080 }); await page.goto(`http://${domain}`); let domainScreenshot = await page.screenshot({ type: "jpeg", quality: 75, }); domainScreenshot = Buffer.from(domainScreenshot).toString("base64"); await browser.close(); return domainScreenshot; } catch (err) { console.log(`❌ Error: ${err.message}`); } }

Ruta API:

 router.get("/screenshot", async (req, res, next) => { try { const { domain } = req.query; const buffer = await captureScreenshot(domain); res.setHeader("Content-Type", "image/png"); res.send(buffer); } catch (error) { next(error); } });

Solicitud de reducción:

 export const fetchScreenshot = (domain) => async (dispatch) => { try { const params = { domain, }; const { data: imgUrl } = await axios.get("/api/domainData/screenshot", { params, }); if (imgUrl) { dispatch(setImgURL(domain, imgUrl)); } } catch (error) { console.error(error); } };

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Encontré una solución:

Agregué esta línea a la matriz de argumentos del titiritero:

 "--single-process"

Todavía tiene errores, pero es más como 1/10 veces, lo que es mucho más aceptable.

over 4 years ago · Santiago Trujillo 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!