系统转移过程中,擅自把aptitude安装的mongoengine换成了pip安装,系统启动以后,报这个错误

报错提示:

  1. File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 748, in _socket_for_reads
  2. with self._get_socket(read_preference) as sock_info:
  3. File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
  4. return self.gen.next()
  5. File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 712, in _get_socket
  6. server = self._get_topology().select_server(selector)
  7. File "/usr/local/lib/python2.7/dist-packages/pymongo/topology.py", line 141, in select_server
  8. address))
  9. File "/usr/local/lib/python2.7/dist-packages/pymongo/topology.py", line 117, in select_servers
  10. self._error_message(selector))
  11. ServerSelectionTimeoutError: No servers found yet

因为是系统转移,刚开始是以为mongodb服务器那边服务的问题,后来上网查了一下,发现是pymongo的3.0.*以后版本接口向前兼容的一个bug,SoF某贴(地址见最后)提供了2个方案:

方案一,多传一个connect=False的参数:

  1. MongoClient(uri, connect=False)

方案二、在初始化MongoClient实例之前,在子进程等几秒,代码如下:

  1. def start(uri):
  2. time.sleep(2)
  3. mclient = MongoClient(uri)
  4. mclient.db.collection.find_one()
  5. if __name__ == '__main__':
  6. p = multiprocessing.Process(target=start, args=('mongodb://localhost:27017/',))
  7. p.start()

我的解决方案:虽然我用的不是上面任何方案的接口,我使用的是mongoengine的接口函数,底层任然是pymongo

  1. from mongoengine import connect

按照方案一,在这个connect原调用位置的参数里面加了connect=False,问题解决。

第二个问题,使用新版本pymongo以后出现的问题,错误提示:

  1. [Errno 104] Connection reset by peer

经SoF某贴,认为是mongodb的读写文件数超标了,其实我没在mongodb的log里面找到相应信息,只是当时的确做了大数据量的mongodb读写操作,于是按照帖子的要求添加/etc/security/limits.d/mongodb.conf 文件,文件内容:

  1. mongodb        hard    nofile          99999
  2. mongodb        soft    nofile          99999
  3. mongodb        hard    nproc           99999
  4. mongodb        soft    nproc           99999

BugFix效果还待验证

参考:SoF某贴:http://stackoverflow.com/questions/30710427/pymongo-and-multiprocessing-serverselectiontimeouterror

pymongo "ServerSelectionTimeoutError: No servers found yet" 错误的解决的更多相关文章

  1. 安装MYSQL详细教程 版本:mysql-installer-community-5.7.16.0 免安装版本和安装版本出现错误的解决

    一.版本的选择 之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mysql,感觉好多坑,我是来踩坑,大家看到坑就别跳了,这样可以省点安装时间,这个折腾了两天,安装了好多个版本 ...

  2. WIN7下安装visualC++2008 redistributable 出现1935错误的解决办法(转自)

    转自:http://zhidao.baidu.com/link?url=jylNh_JeANi4wrOMmd4d2i06e_N3QCw7z6BLGiNNNTu1Hc6ADTkUq2PORExKmjtk ...

  3. Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法

    Oracle客户端工具出现"Cannot access NLS data files or invalid environment specified"错误的解决办法 方法一:参考 ...

  4. VMWare虚拟机实例拷贝到另一台服务器后出现Error in the RPC receive loop: RpcIn: Unable to send.错误的解决

    把一个VMWare虚拟机实例拷贝到另一台服务器后,在事件查看器中的应用程序日志中不断出现Error in the RPC receive loop: RpcIn: Unable to send.错误, ...

  5. Eclipse启动时发生An internal error occurred during: "Initializing Java Tooling".错误的解决方法

    问题描述: Eclipse启动时发生An internal error occurred during: "Initializing JavaTooling".错误的解决方法 解决 ...

  6. Xcode 升级后,常常遇到的遇到的警告、错误,解决方法(转)

    从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了.1,警告:“xoxoxoxo”  is deprecated解决办法:查看xoxoxoxo的这个方法的文档,替换 ...

  7. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法

    在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...

  8. VS2010出现FileTracker : error FTK1011编译错误的解决办法

    VS2010出现FileTracker : error FTK1011不知道是不是vs2010的一个bug,反正有人提交了. FileTracker : error FTK1011编译错误的解决办法有 ...

  9. SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法

    一般备份文件选择的目录为磁盘根目录或备份所选分区未授予sqlserver用户读写权限时会出现此错误. 解决办法就是给sqlserver用户授予权限: 选择要备份的文件夹 ,右键-->属性--&g ...

随机推荐

  1. Android样式(style)和主题(theme)资源介绍-android学习之旅(五十六)

    样式(style)资源 代码示例 <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  2. 数据拟合:多项式拟合polynomial curve fitting

    http://blog.csdn.net/pipisorry/article/details/49804441 常见的曲线拟合方法 1.使偏差绝对值之和最小 2.使偏差绝对值最大的最小       3 ...

  3. Touch Handling in Cocos2D 3.x(四)

    创建触摸生命周期 让我们改善我们的应用程序.如果玩家可以触摸屏幕并且拖放英雄到指定位置不是更好吗? 为了完成这个功能我们必须使用Cocos2d 3.0提供的所有的触摸事件: touchBegan:在用 ...

  4. Zookeeper实现负载均衡

    原理解析         架构图                  每台WorkServer启动的时候都会到Server创建临时节点.         每台ClientServer启动的时候,都会到S ...

  5. 敦泰FT6X06单层自容调屏

    总的概括来说,自电容调屏在配置好通道个数和顺序后,只需调整AFE相关的设置参数使各通道的Raw Data和CI值符合定义的标准即可.– AFE是模拟前端的缩写-Analog Front End• Ra ...

  6. [面试算法题]有序列表删除节点-leetcode学习之旅(4)

    问题描述 Write a function to delete a node (except the tail) in a singly linked list, given only access ...

  7. 集群通信组件tribes之集群的消息接收通道

    与消息发送通道对应,发送的消息需要一个接收端接收消息,它就是ChannelReceiver.接收端负责接收处理其他节点从消息发送通道发送过来的消息,实际情况如图每个节点都有一个ChannelSende ...

  8. 从头到尾解析Hash表算法

    via:点击打开链接 十一.从头到尾解析Hash 表算法 作者:July.wuliming.pkuoliver   出处:http://blog.csdn.net/v_JULY_v.   说明:本文分 ...

  9. 第十一章 图像之2D(2)

    Android游戏开发群:290051794 Libgdx游戏开发框架交流群:261954621 作者:宋志辉  出处:http://blog.csdn.net/song19891121 本文版权归作 ...

  10. Linux常用命令(第二版) --权限管理命令

    权限管理命令 1.chmod[change the permissions mode of a file] : /bin/chmod 语法: chmod [{ugo}{+-=}{rwx}] [文件或目 ...