ansibleAPI怎么做异步
在直接使用 ansible 时候有-B -p 参数可以启用异步操作,然后返回一个 job_id 值
[root@master ansible]# ansible node1 -B -P -m yum -a "name=ansible" -vv
Using /etc/ansible/ansible.cfg as config file
META: ran handlers
192.168.77.129 | SUCCESS => {
"ansible_job_id": "23974611070.37468",
"changed": true,
"finished": ,
"results_file": "/root/.ansible_async/23974611070.37468",
"started":
} [root@master ansible]# ansible node1 -m async_status -a "jid=23974611070.37468"
192.168.77.129 | SUCCESS => {
"ansible_job_id": "23974611070.37468",
"changed": false,
"finished": ,
"msg": "",
"rc": ,
"results": [
"ansible-2.3.1.0-1.el6.noarch providing ansible is already installed"
]
}
playbook 也是可以指定参数启用异步的。
# asynctest.yml
--- - hosts: node1
tasks:
- shell: sleep 100 && hostname
async: 100
poll: 0
register: result - debug: var=result - async_status: jid={{ result.ansible_job_id }}
register: job_result
until: job_result.finished
retries: 30
那么在 ansible api 里对于 ad-hoc 和 playbook 怎么启用这个异步任务的,不然页面有时候要卡好久在那的。
def run_model(self, module_name, module_args, task_time=None, poll=None):
"""
run module from andible ad-hoc.
module_name: ansible module_name
module_args: ansible module args
task_time: 这个任务执行时间的上限值。即任务执行所用时间如果超出这个时间,则认为任务失败。这个需要大于0,等于 0 的时候不支持异步(默认值)。
poll: 任务异步执行时轮询的时间间隔。如果poll为0,就相当于一个不关心结果的任务。
"""
self.ips_cov_str() if task_time and poll:
play_source = dict(
name="Ansible Play",
hosts=self.ips,
gather_facts='no',
tasks=[dict(action=dict(module=module_name, args=module_args), async=task_time, poll=poll)]
)
else:
play_source = dict(
name="Ansible Play",
hosts=self.ips,
gather_facts='no',
tasks=[dict(action=dict(module=module_name, args=module_args))]
)
play = Play().load(play_source, variable_manager=self.variable_manager, loader=self.loader)
.......
ansibleAPI怎么做异步的更多相关文章
- 用 Python 3 的 async / await 做异步编程
前年我曾写过一篇<初探 Python 3 的异步 IO 编程>,当时只是初步接触了一下 yield from 语法和 asyncio 标准库.前些日子我在 V2EX 看到一篇<为什么 ...
- 使用过redis做异步队列么,你是怎么用的?有什么缺点?
Redis设计主要是用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列. 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列: 另外,做消息队列的其他特性例如FIF ...
- asp.net的web程序适用后台线程做异步任务
耗时的任务适用异步线程来完成. 像记录日志,发邮件,发短信,通知其他系统等.可以进行封装,让后台线程来完成,不过最好适用消息队列,redis缓存等中间件,适用定时任务来做.可以保证消息不丢失. usi ...
- Celery-一个会做异步任务,定时任务的芹菜
Celery 分布式任务队列 同步与异步 比如说你要去一个餐厅吃饭,你点完菜以后假设服务员告诉你,你点的菜,要两个小时才能做完,这个时候你可以有两个选择 一直在餐厅等着饭菜上桌 你可以回家等着,这个时 ...
- Django项目中使用celery做异步任务
异步任务介绍 在写项目过程中经常会遇到一些耗时的任务, 比如:发送邮件.发送短信等等~.这些操作如果都同步执行耗时长对用户体验不友好,在这种情况下就可以把任务放在后台异步执行 celery就是用于处理 ...
- vue---结合elementui做异步数据分页
使用vue+elementui来请求数据做分页: <el-col :span="24" class="toolbar pageBar"> <e ...
- spring boot:配置druid数据库连接池(开启sql防火墙/使用log4j2做异步日志/spring boot 2.3.2)
一,druid数据库连接池的功能? 1,Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 2,druid的官方站: http ...
- spring boot:使用log4j2做异步日志打印(spring boot 2.3.1)
一,为什么要使用log4j2? log4j2是log4j的升级版, 升级后更有优势: 性能更强/吞吐量大/支持异步 功能扩展/支持插件/支持自定义级别等 这些优 ...
- HDCMS做异步加载!
控制器的写法: //ajax 请求新闻列表 public function ajaxnewsList(){ $data = Q('sum'); $newsList = M('xinwen')-> ...
随机推荐
- Java Web(1)-JavaScript
一.JavaScript 和 html 代码的结合方式 1. 第一种方式 只需要在 head 标签中,或者在 body 标签中, 使用 script 标签 来书写 JavaScript 代码 < ...
- iOS打包测试ipa
1. 连接iphone真机 2.选中真机, archive
- pycharm控制台输出的日志全是红色的字体?
问题:logging在pycharm控制台输出的日志的字体全是红色的,怎么办? 图片描述: 解决办法:设置 -> 搜索“Console” -> 结果:改完立马生效
- DQL_MySQL
4.DQL(查询数据){SUPER 重点} 4.1DQL (Data Query Language : 数据查询语言) -所有的查询操作: Select 数据库中最核心的语言 create data ...
- xctf-pwn hello_pwn
走流程,看看文件类型 64位,开了NX 直接丢IDA分析 查看sub_400686() 是个给flag的函数,可以看到,只要满足if语句的条件使dword_60106C == 1853186401就可 ...
- 【Laravel】 常用的artisian命令
全局篇 查看artisian命令 php artisan php artisan list 查看某个帮助命令 php artisan help make:model 查看laravel版本 php a ...
- 选择排序的实现以及如何编写测试 #CS61B-sp18-3.1
Selection Sort的思想: 就是在一系列数字中先找到一个最小的放在所有数字的第一个位置上,然后再从余下的数字里面找最小个放在余下的数字里的第一个位置上. 例如: 在这段数据里面我们找到最小的 ...
- Python2.7 PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed 问题解决
# 报错信息 PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.insta ...
- 将"089,0760,009"变为 89,760,9
remove_zeros = lambda s: ','.join(map(lambda sub: str(int(sub)), s.split(','))) remove_zeros("0 ...
- PHP mysqli_refresh() 函数
定义和用法 mysqli_refresh() 函数刷新表或缓存,或者重置复制服务器信息.高佣联盟 www.cgewang.com 语法 mysqli_refresh(connection,option ...