把你所有的mongos放在一个地方的工具

mongo-pool的Python项目详细描述


![图片](https://cloud.githubusercontent.com/assets/250750/5323889/4f7cf454-7cdd-11e4-81f0-7e3ee8f9556.png)


\[构建状态](https://travis-ci.org/ubervu/mongo-pool.svg?branch=master)(https://travis ci.org/ubervu/mongo pool)

-[description](description)
-[install](install)
-[usage](usage)
-[basic example](basic example)
-[multiple databases on the same cluster](multiple databases on the same cluster)
-[dynamic path].(#动态路径)
-[设置超时](设置超时)
-[自定义连接类支持](自定义连接类支持)
-[设置](设置)

o客户端,允许您只使用数据库名称,而不必担心创建和管理连接。

使用Mongopool,您可以在一个地方保持有关信息的连接,并允许您在需要时轻松修改它。

在Ubervu,我们有信心使用它管理超过25个Mongo实例,为我们的客户提供优质服务。

$sudo-pip-install mongo pool
````
`````
` ` ` ` ` ` ` ` ` ` bash
$git-clone https://github.com/ubervu/mongo pool
$cd-mongo pool
$sudo-pythothon setup.pyinstall
`` ` `
` ` `
` ` ` ` ` `
` ` ` ` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` `/>要开始,您所要做的就是建立一个列表包含连接到群集、实例化Mongopol和通过点符号访问数据库所需信息的字典的数量。
``python
>;>config=[{'cluster1':{'host':'127.0.0.1','port':27017,'dbpath':'blogs'},
…{'cluster2':{'host':'127.0.0.1','port':27018,'dbpath':'posts'}]
>;>;mongopol=mongopol(config)
>;>;mongopol.blogs
数据库(mongoclient('127.0.0.1',27017),u'blogs')
>;mongopol.posts
数据库(mongoclient('127.0.0.1',27018),u'posts')
```


可以将dbpath指定为包含数据库名称的数组,如下例所示:
``python
>;>;config=[{cluster1':{host':'127.0.0.1','port':27017,'dbpath':['blogs','posts']}]
>;>;mongopol=mongopol(config)
>;>;mongopol.blogs
数据库(mongoclient('127.0.0.1',27017),u'blogs')
>;>mongopol.posts
数据库(mongoclient('127.0.0.1',27017),u'posts')
`````

在这种情况下,不可能在dbpath中的集群上添加所有数据库。因此,可以将其作为regexp模式传递。假设您将每个月的注释保存在一个单独的数据库中,命名为comments-monthyear:
``python
>;>config=[{'cluster1':{'host':'127.0.0.1','port':27017,'dbpath':'comments'}
>;>mongopol=mongopol(config)
>;数据库(mongoclient('127.0.0.1',27017),u'comments_')
>;>;mongopool.comments_
数据库(mongoclient('127.0.0.1',27017),u'comments_')
```

**警告**:这是一个强大的功能,但应谨慎使用。dbpath将按照您将它们放入配置列表的顺序进行匹配,因此请确保将它们从最特殊的顺序排列到最一般的顺序,以避免创建不正确的映射并连接到错误的集群。

**错误**
``python
config=[{cluster1':{host':'127.0.0.1',port':27017,'dbpath':'.'},
{'cluster2':{'host':'127.0.0.1','port':27017,'dbpath':['blogs','comments'}]
`````
**更正**
``python
config=[{'cluster1':{'host':'127.0.1','port':27017,'dbpath':['blogs','comments'},
{'cluster2':{'host':'127.0.0.1','port':27017,'dbpath':'.*'}]
`````
\\\\\\\\\\}默认情况下设置超时
,mongoclient没有设置超时,尽管有时很方便。要设置连接超时,可以在实例化mongopol时将其作为第二个参数传递,也可以使用set_timeout方法,该方法将使用新超时重新创建所有连接,并使用新值创建所有新连接。
``python
mongopol=mongopol(config,net工作超时=2)

mongopol.set廑timeout(network廑timeout=5)
`````

=mongopool(config,connection嫒class=myclass)
````
为了使用它,您必须在不同的端口上启动多个mongod实例。为此,您可以运行**start_instances.sh**脚本。如果不想打开许多mongod实例,可以将配置文件中的所有端口值更改为27017,并删除使用复制集的**label3**条目。
``bash
e_config.yml file
$./start戋instances.sh
$python
`````
,然后运行以下命令:
```python
import os
import yaml
from mongo pool import mongopool

filename=os.path.join(os.getcwd(),'sample戋config.yml')
options=yaml.load(open(filename))
config=options['mongopol']
pool=mongopol(config)
````
现在您应该有一个可以使用的工作mongopol实例了。
完成后,运行:
``bash
./clean\u instances.sh
```
CES关闭

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
eclipse如何在Java中定义main(String[]args)而不出现警告和错误?   java获取正则表达式匹配后的文本   java什么是Gradle深度解释中的buildbyconvention?   java不允许用户更改文本字段   java为aws lambda中的代码生成swagger文件   Android java。网UnknownHostException:主机未解析:服务器地址:443   java onBackPressed()完成我的活动   电子邮件中的java语言环境   面向匿名用户的java Tomcat/spring会话管理   java在参考资料中添加docx文件并创建可执行jar   plsql使用Java执行plsql   使用lambda表达式更新嵌套列表:Java 8   静态数据的java短期与长期