|
2 | 2 | import gevent |
3 | 3 | import gevent.pool |
4 | 4 | import urlparse |
5 | | -import re |
6 | 5 | import time |
7 | 6 | import pymongo |
8 | 7 | from .utils import LazyObject, load_class_by_path |
@@ -145,45 +144,19 @@ def versiontuple(v): |
145 | 144 | elif config_obj == "0": |
146 | 145 | return None |
147 | 146 |
|
148 | | - try: |
149 | | - # MongoKit's Connection object is just a wrapped MongoClient. |
150 | | - from mongokit import Connection as MongoClient # pylint: disable=import-error |
151 | | - from mongokit import ReplicaSetConnection as MongoReplicaSetClient # pylint: disable=import-error |
152 | | - except ImportError: |
153 | | - from pymongo import MongoClient |
154 | | - from pymongo import MongoReplicaSetClient |
| 147 | + from pymongo import MongoClient |
155 | 148 |
|
156 | | - mongo_parsed = re.match( |
157 | | - r"mongodb://((\w+):(\w+)@)?([\w\.:,-]+)/([\w-]+)(\?.*)?", |
158 | | - config_obj |
159 | | - ).groups() |
| 149 | + mongo_parsed = pymongo.uri_parser.parse_uri(config_obj) |
160 | 150 |
|
161 | | - mongo_hosts = mongo_parsed[3] |
162 | | - mongo_name = mongo_parsed[4] |
163 | | - mongo_options = mongo_parsed[5] |
| 151 | + mongo_hosts = mongo_parsed["nodelist"] |
| 152 | + mongo_name = mongo_parsed["database"] |
164 | 153 |
|
165 | 154 | log.debug("%s: Connecting to MongoDB at %s/%s..." % (attr, mongo_hosts, mongo_name)) |
166 | 155 |
|
167 | 156 | kwargs = {} |
168 | | - options = {} |
169 | | - if mongo_options: |
170 | | - options = { |
171 | | - k: v[0] |
172 | | - for k, v in urlparse.parse_qs(mongo_options[1:]).iteritems() |
173 | | - } |
174 | | - |
175 | | - # We automatically switch to MongoReplicaSetClient when getting a replicaSet option. |
176 | | - # This should cover most use-cases before pymongo 3.0.0 which switches automatically. |
177 | | - # http://api.mongodb.org/python/current/examples/high_availability.html#mongoreplicasetclient |
178 | | - if options.get("replicaSet") and versiontuple(pymongo.version) < versiontuple("3.0.0"): |
179 | | - try: |
180 | | - from mongokit import ReplicaSetConnection as MongoReplicaSetClient # pylint: disable=import-error |
181 | | - except ImportError: |
182 | | - from pymongo import MongoReplicaSetClient |
183 | | - |
184 | | - db = MongoReplicaSetClient(config_obj, **kwargs)[mongo_name] |
185 | | - else: |
186 | | - db = MongoClient(config_obj, **kwargs)[mongo_name] |
| 157 | + |
| 158 | + db = MongoClient(config_obj, **kwargs)[mongo_name] |
| 159 | + |
187 | 160 | log.debug("%s: ... connected." % (attr)) |
188 | 161 |
|
189 | 162 | return db |
|
0 commit comments