gpt4 book ai didi

Node.js Kue worker 发送结果

转载 作者:搜寻专家 更新时间:2023-10-31 23:39:07 27 4
gpt4 key购买 nike

我的应用使用 Kue排队请求,这些请求由 worker.js 处理,因为我需要通过 Proximo 发送作业发出的请求 - 这有点令人困惑。但正因为如此,作业的结果无法发送回用户。以前,作业会res.send(results),然后用户会得到数据。

让 Kue'ed 作业将结果发送回用户的最佳方法是什么?目前我能想到的唯一方法是使用网络 Hook ,但这不是最有效的方法,而且它在用户和他们的数据之间建立了一堵墙。

最佳答案

这是我必须执行我认为您正在执行的操作的代码。

简单地说,这只是在 url/job 被命中时添加一个工作,一个工作工作被创建,运行的工作人员选择,等待半秒并生成一个随机数。这是非 socket.io 版本。你可能不应该这样做,但它确实有效。

网络服务器 (web.js):

var port = 1337;
var app = require('express')()
, server = require('http').createServer(app);
server.listen(port);
var fs = require('fs');
var kue = require('kue')
, jobs = kue.createQueue();


app.get('/',function(req,res) {
fs.readFile(__dirname+'/index.html',function(err,data) {
res.send(data.toString());
});
});

var responses = {};
app.get('/job', function(req, res){
var id = ''+Math.random();
jobs.create('worker-job', {
title: 'worker job'
, res_id: id
, template: 'Some string to look up'
}).save();
responses[id] = res;
});

jobs.process('results',function(job,done) {
responses[job.data.res_id].send(job.data);
delete responses[job.data.res_id];
done();
});

worker (worker.js):

var kue = require('kue')
, jobs = kue.createQueue();

jobs.process('worker-job',function(job,done) {
setTimeout(function() {
jobs.create('results',{
title:'results job',
status:'complete',
res_id:job.data.res_id,
random:Math.ceil(Math.random()*10000)
}).save();
done();
},400);
});

关于Node.js Kue worker 发送结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15338820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com