redis比订阅者更快,无法获得所有数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis比订阅者更快,无法获得所有数据相关的知识,希望对你有一定的参考价值。

我使用python发布和订阅消息队列

出版商:

rc = redis.Redis(host='127.0.0.1', port=6379)
rc.ping()
ps = rc.pubsub()
ps.subscribe('bdwaf')
r_str = "--8198b507-A--"
for i in range(0, 20000):
    rc.publish('bdwaf', r_str)

订户:

rc = redis.Redis(host='localhost', port=6379)
rc.ping()
ps = rc.pubsub()
ps.subscribe('bdwaf')
num = 0
while True:
    item = ps.get_message()
        if item:
             num += 1
             if item['type'] == 'message':
                  a.parser(item['data'])
             print num

当发布者循环范围高于20000时,订阅者似乎没有获得所有数据,只有当我向发布者添加睡眠方法时,它才能正常工作。

如何在不向发布者添加睡眠方法的情况下使其工作,无论发布者发布数据的范围是什么,订阅者都可以获取所有数据?

答案

您可以将消息保留在分布式任务队列中。常用于redis的是一个用python编写的分布式任务队列,名为celery(http://www.celeryproject.org/

以上是关于redis比订阅者更快,无法获得所有数据的主要内容,如果未能解决你的问题,请参考以下文章

redis 比datatable 快

redis比datatable快

有没有办法使用 YouTube Data API 每天获得超过 10000 个订阅者的姓名?

redishaskey和getkey效率

如何在订阅Angular7单元测试用例中对代码进行单元测试

深入Redis线程IO模型