我正在编写一个恢复riak数据库工具,我需要从一个riak服务器到另一个riak服务器编写数十万个密钥。这样做大约91,000个密钥需要11分钟(根本没有效率)。我的代码的基本概要如下:
data_objects = bucket.multiget(keys)
for data_object in data_objects:
newEntry = bucket.new(data_object.key, data=data_object.data)
newEntry.store()
python应用程序在单个multiget()函数调用中花费大约7分钟,该调用创建了91,000个Riak对象的data_objects列表,并且在对store()函数的91,000次调用中大约需要4分钟。
是否有更有效的方法来阅读对象?存储对象的更有效方法是什么? riak python库中有一个multiget函数,但不是多元函数。
答案 0 :(得分:-1)
不要使用multiget,创建自己的线程,平等地分享密钥,从旧桶获取,存储到新的。 gevent.monkey_patch.all()也可以提供帮助。