NodeJS http请求处理程序
NodeJS http request handler
在我的项目中,我使用2个异步方法。第一种方法打开一个Applescript,打开一个After Effects项目并加载一个jsx文件(用于调整After Effects中的项目)。第二种方法渲染调整后的After Effects项目,并将其渲染到.mp4文件中。
第一种方法的问题是,它可以很好地打开After Effects,但它只能打开一个After Effects实例,因为After Effects一次只允许打开1个After Effects项目。
如果对代码有多个HTTP请求,After Effects将抛出一个错误。因为它必须同时打开多个After Effects项目,这是不允许的。
我正在寻找一种方法来为这种方法排队HTTP请求,这样After Effects就可以打开一次,几秒钟后执行第二个请求,After Effects就会一次又一次地打开。。。有没有一种方法可以在NodeJS中做到这一点?因为我的代码无法做到这一点,而且我在net/stackoverflow上找不到解决方案。
exports.renderProject = function (req, res) {
async.series([
function (callback) {
callback();
},
function (callback) {
var template = req.body[0].template; //project to render (.aep file)
//OSX editproject
var editProject = executablepathOSX + " " + template + " " + template + ".jsx" + " " + guid /*retValVacancyList[0].animation.template*/
var sys = require('sys');
var exec = require('child_process').exec;
var child;
// executes 'edit project'
child = exec(editProject, function (error, stdout, stderr) {
sys.print('stdout: ' + stdout);
sys.print('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
callback();
});
},
function (callback) {
var renderProject = shellscript + "renderMp4.sh " + guid + ".aep " + guid + ".mp4"//guid + ".avi" //animation.template .avi name(guid)
var sys = require('sys');
var exec = require('child_process').exec;
var child;
// executes 'render project'
child = exec(renderProject, function (error, stdout, stderr) {
sys.print('stdout: ' + stdout);
sys.print('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
callback();
});
}
您可以使用async.queue
:
var exec = require('child_process').exec;
var aequeue = async.queue(function(template, callback) {
var editProject = executablepathOSX + ' ' + template + ' ' + template + '.jsx' + ' ' + guid /*retValVacancyList[0].animation.template*/
// executes 'edit project'
exec(editProject, function(error, stdout, stderr) {
callback(error);
});
}, 1);
async.series([
function (callback) {
callback();
},
function (callback) {
aequeue.push(req.body[0].template, callback);
},
function (callback) {
var renderProject = shellscript + "renderMp4.sh " + guid + ".aep " + guid + ".mp4"//guid + ".avi" //animation.template .avi name(guid)
// executes 'render project'
exec(renderProject, function(error, stdout, stderr) {
callback(error);
});
}
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 如何在node+express中重新运行请求处理程序
- 如何在phonegap应用程序中处理Ajax json响应
- 在基于Strophe.js的聊天应用程序中处理状态
- 使用异步模块的Express + Mongoose请求处理程序的更简洁的方法
- 是否有任何方法可以像处理jQuery中附加到XHR延迟对象的done方法处理程序一样处理websocket onmess
- "npm运行构建“;模块解析错误”;您可能需要一个适当的加载程序来处理此文件类型&”;
- iOS版离线Jquery Mobile应用程序中处理导航的正确方法
- 如何在React应用程序中处理权限检查(Redux中的状态维护)
- 使用jQuery破解上传程序以处理大文件
- Facebook Graph API-#4错误-已达到应用程序请求限制
- 防止通过父元素处理程序触发处理程序
- 取消 ajax 请求:处理程序是否仍可执行
- NodeJS http请求处理程序
- 从Express中的POST请求处理程序下载文件
- 在Koa请求处理程序中触发下载
- 在JavaScript Firebase应用程序中处理POST请求的正确方法
- 浏览器在执行“卸载”前发送http请求.处理程序
- Node.js请求处理程序不会调用函数