saltstack api利用job来异步处理任务

这里再介绍下 saltstack api的使用
对于saltstack api他的的使用是相当的简单,最简单的一个例子:

In [8]: import salt.client
In [9]: local = salt.client.LocalClient()
In [10]: local.cmd('*', 'cmd.run', ['ip a']) 

这个意思是调用cmd.run 传参数ip a  用来查看ip地址。

但是有的时候咱们会做非堵塞的处理,比如一个非常消耗时间的动作。我们不能在前端总是在等待,不能做别的事情。当然用了ajax之后你可以做别的事情,但是转跳到别的页面后你的ajax线程也就消失了,你不能获取刚才执行任务的返回值。

saltstack里有方案,那就是用 saltstack  job管理

下面是官网的文档

http://docs.saltstack.com/en/latest/topics/jobs/index.html

查看还在运行的程序:
salt-run jobs.active
查看以前的操作历史记录来:
salt-run jobs.list_jobs
查看制定的jid,来查看返回的信息
salt-run jobs.lookup_jid <job id number>

在api这里操作job也相当的容易,和cli的用法是一样的,获取jid,然后不断的从jid获取数据。


通过任务号得出结果
import salt.runner
opts = salt.config.master_config('/etc/salt/master')
runner = salt.runner.RunnerClient(opts)
#所有的任务号,以及执行的记录审计
runner.cmd('jobs.list_jobs', [])
#通过任务号得出结果
runner.cmd('jobs.lookup_jid', ['20140224141910302282'])

我在51cto上写了一些saltstack的文章,有兴趣的朋友可以看看。 

http://rfyiamcool.blog.51cto.com/1030776/1357677 




大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注