Python redis订阅不能获取所有数据?

2024-09-28 03:12:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python从redis获取数据,然后将其解析到kafka。它在大多数情况下都很有效。在

但是当我使用python来模拟将数据构建到redis中时,或者在queuen中有一个快速的输入数据,我不能得到所有的数据。在

下面是我关于redis producer模拟生成20000个数据到redis的代码:

rc = redis.Redis(host='127.0.0.1', port=6379)
rc.ping()
ps = rc.pubsub()
ps.subscribe('bdwaf')
r_str = "--8198b507-A--\n[22/Jun/2017:14:13:19 +0800]ucTcxcMcicAcAcAcicAcAcAm 192.168.1.189 50054 127.0.0.1 80\n"
for i in range(0, 20000):
    rc.publish('bdwaf', r_str)

而redis的消费者也是卡夫卡的生产商是:

^{pr2}$

它只打印出大约4000个数据。在

如果我注释a.parser(item['data']),它可以打印出所有的datas num

或者wirtesleep(0.001)在redis producer中,它也可以打印出所有的数据编号。在

我的代码怎么了?在


Tags: producerkafka数据代码redishostport情况
1条回答
网友
1楼 · 发布于 2024-09-28 03:12:51

我假设您使用的是redis-py。在

文档将listen称为lib的旧版本。。。也许你应该用另一种方法来阅读信息。例如回调

p = r.pubsub()

def my_handler(message):
    print 'MY HANDLER: ', message['data']
    if item['type'] == 'message':
         num += 1
         a.parser(item['data'])
         print num

p.subscribe('bdwaf', my_handler)
# read the subscribe confirmation message
p.get_message()

编辑:

当您一次发布20000条消息时,您的redis服务器可能内存不足。尝试在redis.conf文件中增加redis内存

^{pr2}$

这是一个内存问题,请查看this问题以了解有关如何处理它的详细信息。在

相关问题 更多 >

    热门问题