2017-12-18 257 views
0

我要做的是获取jenkins作业的详细信息并将其存储在mongo数据库中的每个“X”分钟。我必须做一个HTTP.call(JenkinsURL),我知道该怎么做。我的问题是调用它的具体时间间隔。如何让jenkins电话在流星的每个'X'分钟内检索工作细节?

buildDetails=HTTP.call('GET',buildURL); 

buildURL有Jenkins作业URL。我发现这个link,它给出了我的问题的代码的概述,但我不知道如何以及在哪里我应该放置这些代码来使其工作。我尝试了所有可能性。

流星有没有什么方法可以使这个可能运行一个特定的代码来运行每X分钟?

+0

*我尝试了所有可能* - 不要解释。你可以使用'''Meteor.setInterval()'''每隔X个时间间隔运行一次。 – blueren

+0

我的意思是说,我已经尝试了我所指定的链接中的所有代码组合。我尝试了Meteor.setInterval(),它按照它的定义工作,但是当我刷新并导航到其他页面时,它将停止执行interval()代码。 – Snkini

+0

这将是因为你从客户端调用它。是否有任何特定的理由从客户端做到这一点?通常,对于你的用例,它应该从服务器调用,你不觉得吗? – blueren

回答

1

流星有没有什么方法可以运行一个特定的代码来运行每X分钟?

是的,有。

Meteor.setInterval可用于每X时间间隔重复做一件事。

你可以把你的HTTP调用放在服务器上。例如:

Meteor.startup({function(){ 

    var timerID = Meteor.setInterval(function(){ 
        buildDetails=HTTP.call('GET',buildURL); 
        // and other things 
        }, 60000) //60000ms = 1 min 
       } 
}); 

当你想停止计时功能,只需拨打Meteor.clearInterval

Meteor.clearInterval(timerID); 
+0

在Meteor.setInterval(getAndStore(){ – Snkini

+0

)上得到错误= =“unexpected,expected,”我的坏,我的getAndStore()'''语法错误,它应该只是一个'''''''''''''''我已经修复了。我不确定为什么你的页面刷新使它停止工作,理想情况下应该继续工作,直到应用程序关闭,或者你明确地调用'''clearInterval''' – blueren

+0

Tq,它按照我的预期工作,但问题是当其他服务器端代码(helper,events和其他函数)执行时,getAndStore()将等待其他执行,并且如果我有更多的HTTP.call(),间隔将从初始计数开始。还有什么其他的方式可以让它像线程一样在后台运行吗?参考如果你知道.. – Snkini