4321oiuy 发表于 2016-9-18 10:05:21

Python redis 发布和订阅

发布和订阅类似于RSS
发布者:服务器
订阅者:Dashboad和数据处理
看下面代码:
类文件名:monitor.py:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python
# -*- coding: utf-8 -*-

__author__ = 'gaogd'

import redis

class RedisHelper:
    def __init__(self):
      self.__conn = redis.Redis(host='192.168.10.12', port=6379, password='wdzj2014')
      self.chan_sub = 'fm250'
      self.chan_pub = 'fm250'

    def public(self, msg):      ##发送消息到fm250这个频道
      self.__conn.publish(self.chan_pub, msg)
      return True

    def subscribe(self):      ##订阅 (接受fm250这个频道的消息)
      pub=self.__conn.pubsub()
      pub.subscribe(self.chan_sub)
      pub.parse_response()
      return pub




订阅者文件名:subscriber.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'gaogd'
'''
订阅
'''
import sys,os
sys.path.append(os.path.dirname(__file__))
from redis_monitor import RedisHelper
obj = RedisHelper()
redis_sub = obj.subscribe()   ##订阅
while True:
    msg = redis_sub.parse_response()
    print(msg)




发布者文件名:publisher.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'gaogd'
'''
发布
'''
import sys,os
sys.path.append(os.path.dirname(__file__))
from redis_monitor import RedisHelper
obj = RedisHelper()
while True:
    content = raw_input(u'请输入你要发布的内容:').strip()
    if content == 'exit':
      break
    obj.public(content)    ## 发送内容




需要注意的是,输出的结果为列表,其中的元素均是字节的类型!
页: [1]
查看完整版本: Python redis 发布和订阅