在扭曲中使用pymongo究竟有什么问题?

时间:2014-08-28 20:32:24

标签: python mongodb twisted pymongo

我有一个扭曲的服务器应用程序,它与大约1000个客户端保持持久连接。每个客户端偶尔会将数据发送到我的扭曲服务器,我希望该服务器将数据存储到MongoDB数据库中。到目前为止,非常好。

但是,pymongo文档说的是“没有好的方法来使用扭曲的pymongo”。我不明白为什么不。有人可以解释一下究竟是什么问题以及陷阱是什么?我认为它与pymongo同步有关,但我想做的就是把一些东西塞进数据库。

如果我在一个文件connector.py中声明了一个pymongo.MongoClient实例,然后我将连接器导入到运行我的Twisted工厂和协议的主python文件中,我应该可以使用pymongo的那个实例。 MongoClient在每个协议(连接到每个客户端)中将数据存储到数据库。

究竟是什么问题?显然我有点困惑。

1 个答案:

答案 0 :(得分:5)

简而言之:pymongo呼叫是阻塞的,当它们运行时它们会冻结扭曲的引擎,直到呼叫返回,这对于扭曲的内部状态是随机破坏性的,因为它与扭曲的内容相反。专为。

相反,你应该寻找一个扭曲的类似驱动程序,如tx-mongo。 tx-mongo的观众比pymongo少,所以它的文档比较粗略,但你应该能够在它的example目录中找到你需要的所有内容。

背景:Threading vs Event programing