couchdb的多进程批量上传助手
mpcouch的Python项目详细描述
状态
这个还没有完成,但是已经可以使用了。
历史记录
电压0.2.7
- 更新了自述文件
电压0.2.6
- 引入了jobsbuffersizemax参数来限制工作内存中缓冲的上载处理量。现在可以处理无限大的数据了。
电压0.2.5
- 只生成一个用于执行上载的并发进程
电压0.2.4
- 工作版本,仍然跨越无限数量的进程
用法
创建新的mpcouchpusher对象
myCouchPusher = mpcouch.mpcouchPusher( "http://localhost:5984/myDatabase", 30000 )
如果创建数据的速度比上载速度快,则可能需要在允许缓冲另一批上载过程之前暂停生成新文档。缓冲上载进程的数量由可选的jobsbuffersizemax参数指定,该参数默认为10。这意味着,当已经有10个批上载进程在等待执行时,模块将保持主python线程,直到一个进程完成。 通过调整此值,可以在上载缓冲区(工作内存)和文档生成速度之间找到平衡。
每次准备好将一个文档存储在数据库中时,请使用此对象:
myCouchPusher.pushData(myNewDocument)
该模块将收集所有文档,直到达到阈值(在我们的示例中,这将是上面指定的30000个文档),并将它们作为批处理上载到couchdb,couchdb也是在对象创建时指定的(mycochdbdatabase)。
由于每次批量上传都是由一个进程执行的,因此当上传在后台进行时,原始程序将继续运行。
要等待所有正在运行的上载完成并确保将最后一批文档推送到服务器,请运行
myCouchPusher.finish()
在你的最终文件被发送到pushdata之后。 模块现在等待所有上传完成,并上传最后一批收集的文档。