我有一个扭曲的服务器应用程序,维护与大约1000个客户端的持久连接每个客户端偶尔会将数据发送到我的扭曲服务器,我希望该服务器将数据存储到MongoDB数据库中.到现在为止还挺好.
但是,pymongo文档说的是“没有好的方法来使用扭曲的pymongo”.我不明白为什么不.有人可以解释一下究竟是什么问题以及陷阱是什么?我认为这与pymongo同步有关,但我想做的就是把一些东西塞进数据库.
如果我在一个文件connector.py中声明了一个pymongo.MongoClient实例,然后我将连接器导入到运行我的Twisted工厂和协议的主python文件中,我应该可以在每个实例中使用pymongo.MongoClient用于将数据存储到数据库的协议(连接到每个客户端).
究竟是什么问题呢?显然我有点困惑.
解决方法:
简而言之:pymongo呼叫是阻塞的,当它们运行时它们会冻结扭曲的引擎直到呼叫返回,这对于扭曲的内部状态是随机破坏性的,因为它与扭曲设计的相反.
相反,你应该寻找一个扭曲的可比较的驱动程序,如tx-mongo. tx-mongo有较小的观众然后pymongo,所以它的文档相对有点粗糙,但你应该能够在它的example
目录中找到你需要的所有.
背景:Threading vs Event programing