我需要读取经过网络传输的一些数据,并将其插入到MongoDB中。所有这些都使用Python脚本完成。有没有办法从Python中对Mongo进行非阻塞插入,这样我就可以在Mongo服务器处理插入时继续处理网络传输的数据?
可以。有三种可能: 进行未确认的插入:collection.insert(documents, w=0)。调用insert()后,数据已写入套接字的输出缓冲区,你的代码不会因等待MongoDB的确认而阻塞。你的应用程序将得不到任何错误报告。关于写入关注更多信息请看这里和这里。 将文档批量添加到队列中,在单独的线程中从队列中弹出并插入到MongoDB中:collection.insert(q.get())。 如James Mills所建议的,将应用程序转移到Tornado和Motor上;这似乎需要学习最多,并且可能过度设计。
给 Motor 一个尝试。它是为 Tornado Web 框架提供的异步 Mongo 驱动程序。否则还有其他选择: https://pypi.python.org/pypi/asyncmongo https://github.com/fiorix/mongo-async-python-driver