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

164
Visualizações
El archivo worker.js no procesa los trabajos que se le envían en Heroku

Por alguna razón, esta configuración no funciona. Todo lo que intento hacer es ejecutar el procesamiento del trabajo no en el hilo principal, porque está bloqueando mi ciclo de eventos. El perfil se parece a:

 web: node app.js worker: node worker.js

paquete.json:

 { "name": "server-testing", "version": "1.0.0", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "npm start" }, "author": "", "license": "ISC", "description": "", "dependencies": { "bull": "^3.22.6", "express": "^4.17.1", "throng": "^5.0.0" }, "engines": { "node": "14.17.6" } }

aplicación.js:

 const express = require('express'); const app = express(); const http = require('http').Server(app); const Queue = require('bull'); const workQueue = new Queue('work', process.env.REDIS_URL) app.post('/addJob', async function(request, response) { let job = await workQueue.add({request: request.body}); console.log("Logging job as " + job.id) response.json({ id: job.id }); });

trabajador.js:

 let throng = require('throng'); let Queue = require("bull"); let REDIS_URL = process.env.REDIS_URL let workers = process.env.WEB_CONCURRENCY || 1; let maxJobsPerWorker = 3; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function start() { console.log("Started processing") let workQueue = new Queue('work', REDIS_URL); workQueue.process(maxJobsPerWorker, async (job) => { let progress = 0; if (Math.random() < 0.05) { throw new Error("This job failed!") } while (progress < 100) { await sleep(50); progress += 1; job.progress(progress) } return { value: "This will be stored" }; console.log("Finished processing") }); } throng({ workers, start });

Salida del comando 'Heroku ps':

 === web (Free): node app.js (1) web.1: up 2021/10/01 20:57:34 -0400 (~ 11m ago) === worker (Free): node worker.js (1) worker.1: up 2021/10/01 20:57:31 -0400 (~ 11m ago)

Esencialmente, las declaraciones de console.log() dentro de la función de proceso nunca se imprimen, lo que indica que los trabajos nunca se procesan. No estoy seguro de lo que me estoy perdiendo aquí...

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