Redis訂閱和發布訊息
首先,發布端啟動 redis-server.exe 服務
發布端 pub.py
#!/usr/bin/env python# -*- coding: utf-8 -*-'''Created on 2015-9-9@author: sxli'''import redisimport sysclass PublishChannel(object): #kword = u"案頭".encode('gb2312') def send_pybot(self,msg): message=["msg1","msg2","msg3"] ''' msg1:對參與者端共用app進行外視窗操作 msg2:對參與者端共用app進行內視窗操作 msg3:參與者端托盤中斷連線重連操作 ''' pool=redis.ConnectionPool(host='192.168.3.58',port=6379,db=0) r = redis.StrictRedis(connection_pool=pool) # input = raw_input("publish:") if msg in message: r.publish('spub', msg) if input == 'over': print '停止發布' # break; if __name__ == "__main__": Do = PublishChannel() Do.send_pybot(sys.argv[1]) print "finish msg to Channel !"
訂閱端 sub.py
#!/usr/bin/env python# -*- coding: utf-8 -*-'''Created on 2017-12-18@author: sxli'''import redisimport win32apiimport ospool=redis.ConnectionPool(host='192.168.3.58',port=6379,db=0)#db=0,選擇操作0號資料庫 redis預設有16個資料庫 conf可以配置r = redis.StrictRedis(connection_pool=pool)p = r.pubsub()p.subscribe('spub')message=["msg1","msg2","msg3"]for item in p.listen(): print item if item['type'] == 'message': data = item['data'] # print data if data == message[0]: print u"對參與者端共用app進行外視窗操作" os.system("C:\JHAppTestAutomation\JHCoDesign-5.0\JHApp-4.0.0\bat\GotoTestCase1.bat") print u"msg1執行完成" elif data == message[1]: print u"對參與者端的共用app進行內視窗操作" #os.system("C:\\JHAppTestAutomation\\JHCoDesign-5.0\\bat\\GotoTestCase2.bat %s " % (x)) elif data == message[2]: print u"對參與者端的共用app進行內視窗操作" #os.system("C:\\JHAppTestAutomation\\JHCoDesign-5.0\\bat\\GotoTestCase2.bat %s " % (x)) elif data == message[3]: print u"登出使用者!" #os.system("C:\\JHAppTestAutomation\\JHCoDesign-5.0\\bat\\GotoTestCase2.bat %s " % (x)) if item['data']=='over': break; p.unsubscribe('spub')print '取消訂閱'
可通過redis-cli.exe進行測試;
cmd 開啟redis-cli.exe
查看使用方法:
“redis-cli.exe” –help
串連至redis服務端:
“redis-cli.exe” -h localhost -p (預設6379)
訂閱一個頻道:
192.168.3.58:6379> subscribe spub
Reading messages… (press Ctrl-C to quit)
1) “subscribe”
2) “spub”
3) (integer) 1
發布一個訊息:
192.168.3.58:6379> publish spub “hello!”
(integer) 1
最後跑通後測試:
訂閱端:python sub.py
{‘pattern’: None, ‘type’: ‘subscribe’, ‘channel’: ‘spub’, ‘data’: 1L}
發布端 執行指令碼:python pub.py msg1
訂閱端:python sub.py
{‘pattern’: None, ‘type’: ‘subscribe’, ‘channel’: ‘spub’, ‘data’: 1L}
對參與者端共用app進行外視窗操作
msg1執行完成
相關串連:
https://blog.csdn.net/kwsy2008/article/details/48372079
https://blog.csdn.net/dgatiger/article/details/50436014
http://redisbook.readthedocs.io/en/latest/feature/pubsub.html