ZMQ的初步学习
来源:互联网 发布:手机网络管理软件 编辑:程序博客网 时间:2024/06/06 09:26
ZMQ
ZMQ Community : http://zeromq.org/community
zguide:http://zguide.zeromq.org/page:all
pyzmq
pyzmq安装包:
https://pypi.python.org/pypi/pyzmq
pyzmq API: http://zeromq.github.io/pyzmq/
http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/#
Server端
#! /usr/bin/env python#coding=utf-8import timeimport zmqfrom zmq.eventloop import ioloop,zmqstreamimport jsonimport optionalSearchimport pymongoimport randomfrom threading import Threadfrom Queue import Queue"""ioloop.install() must be called prior to instantiating *any* tornado objects,and ideally before importing anything from tornado, just to be safe.install() sets the singleton instance of tornado.ioloop.IOLoop with zmq'sIOLoop. If this is not done properly, multiple IOLoop instances may becreated, which will have the effect of some subset of handlers never beingcalled, because only one loop will be running."""ioloop.install()import tornadoimport tornado.webport = "5556"queue = Queue(50)conn = pymongo.Connection("localhost",27017)db = conn.processMonitorsystemStatue = db.systemStatueclass Producer(Thread): def run(self,): global queue context = zmq.Context() socket = context.socket(zmq.REP) socket.bind("tcp://*:%s" % port) while True: msg = socket.recv() socket.send("from server:has recieved...") systemInfo = json.loads(msg) print type(systemInfo) queue.put(systemInfo) print "Produced..." time.sleep(random.random())class Consumer(Thread): def run(self,): global queue,systemStatue while True: msg = queue.get() queue.task_done() print "Consumed::",msg #存储客户机监控信息 systemStatue.insert(msg) #搜素算法(最优二叉查找树) optionalSearch.monitorClientStatue(msg) time.sleep(random.random())# def zmq_rep():# """用于接收数据"""# context = zmq.Context()# socket = context.socket(zmq.REP)# socket.bind("tcp://*:%s" % port)# while True:# msg = socket.recv()# print msg# socket.send("from server:has recieved...")if __name__ == '__main__': #zmq_rep() # worker = threading.Thread(target=zmq_rep) # worker.start() Producer().start() Consumer().start()
客户端
#! /usr/bin/env python#coding=utf-8'''version:1.0监控windows信息:CPU占有率,内存占有率,端口开放情况,当前进程名称数据格式: [{'IP':getIp(),'CPUstate':getCPUState(),'Memorystate':getMemoryState(), 'PortState':getPortState(),'ProcessName':getProcessName()},{},...]'''import timeimport zmqimport psutilimport socketimport jsonport = "5556"server_addr = "192.168.116.133"'''获取被监控客户机的基本状态'''class MachineStatue: def _getHostName(self,): self._hostname = socket.getfqdn(socket.gethostname()) return self._hostname def _getIP(self,): return socket.gethostbyname(self._hostname) def _getCPUState(self, interval=1): return psutil.cpu_percent(interval) def _getProcessInfo(self,): proc_pids = psutil.pids() proc_name = [] for pid in proc_pids: proc = psutil.Process(pid) proc_name.append(proc.name()) return zip(proc_pids,proc_name) def getInfo(self,): hostname = self._getHostName() ip = self._getIP() CPUState = self._getCPUState() processInfo = self._getProcessInfo() info = {'hostname':hostname,'ip':ip,'CPUState':CPUState,'processInfo':processInfo} return infodef main(): print 'begin' machineStatue = MachineStatue() context = zmq.Context() req_socket = context.socket(zmq.REQ) print req_socket req_socket.connect("tcp://%s:%s"%(server_addr,port)) while True: package = machineStatue.getInfo() req_socket.send(json.dumps(package)) print "sending..." rev_info = req_socket.recv(copy=False) print rev_info time.sleep(5)if __name__ == '__main__': main()
0 0
- ZMQ的初步学习
- ZMQ的学习和研究
- zmq学习
- zmq 学习总结
- php-zmq的安装
- ZMQ
- ZMQ
- ZMQ
- zeromq(ZMQ)开篇学习小记
- 编程的初步学习
- json的初步学习
- Smarty的初步学习
- json的初步学习
- OpenMP的学习初步
- 模板的初步学习
- bash的初步学习
- AsyncTask的初步学习
- startActivityForResult的初步学习
- HTML学习笔记之网页元素编辑
- ubuntu下安装QQ
- 第7周项目4-队列数组
- 涂鸦
- linux wake_up
- ZMQ的初步学习
- 条理清晰的搭建SSH环境之整合Struts和Spring
- html5中sql 使用
- 共享一些毕业设计论文
- 众筹出版《介绍用Java编程》一书
- LeetCode解题报告--Swap Nodes in Pairs
- 条理清晰的搭建SSH环境之整合Hibernate和Spring
- uboot 显示nandflash中的图片
- Quarts 示例2