我在我的应用程序中有一条路线,我已经定义了以几个cron作业的风格运行的任务。我知道这可以在必要时通过外部设备的GET请求触发(这是理想的)。 (仅供参考:我将在此路线中添加用于安全目的的验证。)
router.get('/cron', function(req) {
/**
*
* Do cron things...
*/
task();
});
我想知道的是,如果我有必要在必要时通过我自己系统的GET请求触发此操作吗?
真正有用的是使用像node-crontab这样的npm模块重复使用上面的相同路由,并且每隔几个小时就向路由发出一个请求。
var doEveryThirtyMinutes = crontab.scheduleJob("*/30 * * * *", function(){
/**
* Make GET request to '/cron' controller.
* Live a happy life.
*/
});
即使在npm request module文档中,我找不到有关如何发出该请求的任何信息(到我的同一系统)。有没有理由不这样做?我错过了什么吗?这是一种不好的做法吗?
这种设置非常有用的原因是我通过req对象的扩展连接到我的数据库,并且不想实现新的连接模块。此外,我已经为成功/不成功的路由执行实现了一个日志记录过程,所以我也可以重用它。
提前感谢您的帮助!
答案 0 :(得分:0)
是的,您可以向自己的应用程序发出get请求。您可以像任何其他请求一样发出此请求,只需使用您的应用程序的主机和端口。
如果你想从你的操作系统中获取主机名,你可以使用require('os')。hostname https://nodejs.org/api/os.html#os_os_hostname
您不会这样做的原因是您已经在您的应用程序中,因此您不需要通过它的网络接口进行通信。