Redis訂閱發布訊息執行個體

來源:互聯網
上載者:User
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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.