[英]Can I get datas from all images in a folder Python Tesseract?
[英]Python redis subscribe can not get all datas?
我正在使用python从redis获取数据,然后将其解析为kafka。 它在大多数情况下都可以正常工作。
但是,当我使用python模拟生成要重做的数据时,或者在queuen中有快速放入的数据时,我无法获取所有数据。
这是我的关于redis生产者的代码,用于模拟内部版本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消费者也是kafka生产者:
rc = redis.Redis(host='localhost', port=6379)
rc.ping()
ps = rc.pubsub()
ps.subscribe('bdwaf')
num = 0
for item in ps.listen():
if item['type'] == 'message':
num += 1
a.parser(item['data'])
print num
它只打印出4000条数据。
如果我评论a.parser(item['data'])
,它可以打印出所有数据num。
或者在redis生成器中使用sleep(0.001)
,它也可以打印所有数据num。
我的代码有什么问题?
我假设您正在使用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.conf
内存
maxmemory 500mb # or greater if needed
这是一个内存问题,请查看此问题以获取有关如何处理它的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.