是否可以从Python中对Mongo进行非阻塞批量插入?

时间:2013-12-13 05:54:18

标签: python mongodb blocking nonblocking

我必须阅读网络上的一些数据,然后将其插入MongoDB。所有这些都是使用Python脚本完成的。是否有任何方法可以从Python中对Mongo进行非阻塞插入,以便在Mongo服务器处理插入时我可以继续处理来自网络的数据?

2 个答案:

答案 0 :(得分:2)

尝试Motor。它是Tornado Web框架的异步Mongo驱动程序。

否则还有其他选择:

答案 1 :(得分:2)

是。有三种可能性:

  1. 做一个未经确认的插入:collection.insert(documents, w=0)。一旦将数据写入套接字的输出缓冲区,就会返回对insert()的调用,并且您的代码不会阻止等待来自MongoDB的确认。您的应用程序不会收到任何错误报告。有关写关注herehere的更多信息。
  2. 将批量文档添加到Queue,并从队列弹出一个单独的线程并插入MongoDB:collection.insert(q.get())
  3. 按詹姆斯米尔斯的建议将您的申请移至龙卷风和汽车;这似乎需要最多的学习三个,可能是矫枉过正。