我知道使用一个setting.job
文件可以gracefully shutdown an Azure WebJob。这是我的文件:如何正常停止为Nodejs写的Azure WebJob
{
"schedule": "0 */10 * * * *",
"stopping_wait_time": 120
}
我已经写了一个JavaScript的WebJob。 WebJob在Nodejs上运行。它按需配置,并由setting.job
每10分钟触发一次。由于某些原因,我的setting.job
文件不能正常关闭Web Job。它总是失败。
也许我失去了一些东西还是不明白WebJob两端完全如何关机,但我在run.js
一个讨厌的调整结束:
setTimeout(function() {
process.exit();
}, 30000);
的一段代码在的结束时执行脚本。我想知道在我使用的解决方案旁边是否有更优雅的解决方案。
run.js
例如:
const http = require('http');
const request = require('request');
const fb = require('firebase');
request(process.env.SourceUrl, function (error, response, body) {
'use strict';
if (!error && response.statusCode == 200) {
// Process data from body
} else {
console.log(error);
}
});
// Nasty hack to end gracefully
setTimeout(function() {
process.exit();
}, 6000);
当你在本地运行你的工作时,它本身是否关闭,或者你需要ctrl + c来逃脱? –
是的,大多数时候我只是关闭cmd窗口。 – James
对不起,我不确定我的理解。你按ctrl + c /关闭窗口?如果是这种情况,那么很可能您的WebJob中仍然存在侦听器/回调。如果你发布了一些代码,我可以帮你找到这个。 (但不要分享任何你不想让人看到的东西:)) –