系统转移过程中,擅自把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. 程序员修炼之道中所有tips总结

    1         关心你的技艺 如果你不在乎能否漂亮地开发出软件,你又为何要耗费生命去开发软件呢? 2         思考!你的工作 关掉自动驾驶仪,接管操作.不断地批评和评估你的工作. 3    ...

  2. iOS中 UITextView文本视图 技术分享

    UITextView: 文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文. UITextField的用处多,UITextView的用法也不 ...

  3. Linux IPC实践(1) -- 概述

    进程的同步与互斥 进程同步: 多个进程需要相互配合共同完成一项任务. 进程互斥: 由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥;系统中某些 ...

  4. 一个简易版本的lua debugger实现

    introduction 工欲善其事,必先利其器.lua作为一门动态语言,虽然我已经习惯了使用print来进行代码调试,但是还是有很多童鞋觉得一款好用的调试器能更好的进行lua代码编写.所以在以前接手 ...

  5. 敏捷测试(7)--基于story的敏捷基础知识

    基于story的敏捷基础知识----迭代启动会.迭代回顾会 除需求讲解意外,需要所有团队成员参加的会议仅有两个,分别是"迭代启动会"和"迭代回顾会". (1)迭 ...

  6. hello 内核模块

    #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif #include <lin ...

  7. (NO.00001)iOS游戏SpeedBoy Lite成形记(十)

    上篇最后遇到是神马问题呢? 原来由于现在seq动作的时间变得不确定了,jump的持续时间不能对应发生变化,导致可能选手在比赛后边就没有跳跃动作了!这虽不影响整个代码逻辑,却多少有些让玩家不爽. 一种解 ...

  8. 【Java编程】Java中的大整数计算

    在上一篇文章中,我们实现了c语言中的大整数的运算,并且用Miller-Rabin算法实现了对大素数的测试.本来我准备用Java代码实现大整数的运算,查了一下资料发现Java中java.math的Big ...

  9. LeetCode之“散列表”:Contains Duplicate && Contains Duplicate II

     1. Contains Duplicate 题目链接 题目要求: Given an array of integers, find if the array contains any duplica ...

  10. 地产IT人福利:帆软地产BI解决方案全解析

    解决方案下载地址 帆软大型地产集团项目解决方案 下载地址:http://pan.baidu.com/s/1pJGeqKF帆软地产BI解决方案之KPI考核系统 下载地址:http://pan.baidu ...