m5-多主机异步执行命令程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了m5-多主机异步执行命令程序相关的知识,希望对你有一定的参考价值。

这是一个多主机异步执行命令程序

作者介绍:

需求:

例子:
>>:run "df -h" --hosts 192.168.3.55 10.4.3.4 
task id: 45334
>>: check_task 45334 
>>: 
注意,每执行一条命令,即立刻生成一个任务ID,不需等待结果返回,通过命令check_task TASK_ID来得到任务结果 

功能介绍:

先运行server.py,再运行client.py,

键入run ‘ls‘ --hosts 10.1.1.170 10.1.1.192run "ls" --hosts 10.1.1.170 10.1.1.192

立即返回task_id: 1515977xxx

键入check_task 1515977xxx获取命令执行结果,

如结果还未返回,则提示“正在获取结果,稍后再试。。。”

实现说明:

  • 收发消息使用rabbitmq队列存储
  • 客户端传递消息时为避免阻塞,使用了守护线程
  • 服务端连接受管主机使用了多进程,为了聚合多主机执行命令结果,使用了进程间通信

程序调试环境:

  • mac Python 3.6
  • PyCharm 2016.2
  • Rabbitmq 3.6.14

补充说明:

  • 未做异常捕获,个别情况可能不尽人意

以上是关于m5-多主机异步执行命令程序的主要内容,如果未能解决你的问题,请参考以下文章

基于RabbitMQ RPC实现的主机异步管理

8异步和多线程

PHP中实现异步调用多线程程序代码

Saltstack异步执行命令(十三)

类 Fabric 主机管理程序开发

多线程更新UI的常用方法