testcontainers / testcontainers/testcontainers-python
MongoDbContainer on Windows 10 fails with getaddrinfo error
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 2.3k
- Forks
- 386
- Ø Merge
- 4 Std. 40 Min.
- Gemergte PRs (30 T.)
- 1
Beschreibung
The following code fails with testcontainers-python 3.0.2:
from testcontainers.mongodb import MongoDbContainer
with MongoDbContainer('mongo:4.2.2') as mongo_:
... db = mongo_.get_connection_client().test
... db.test.insert_one({'foo': 'bar'})
with
Pulling image mongo:4.2.2
Container started: d5ca66c443
Traceback (most recent call last):
File "<input>", line 3, in <module>
File "C:\...\venv\lib\site-packages\pymongo\collection.py", line 695, in insert_one
self._insert(document,
File "C:\...\venv\lib\site-packages\pymongo\collection.py", line 610, in _insert
return self._insert_one(
File "C:\...\venv\lib\site-packages\pymongo\collection.py", line 599, in _insert_one
self.__database.client._retryable_write(
File "C:\...\venv\lib\site-packages\pymongo\mongo_client.py", line 1490, in _retryable_write
with self._tmp_session(session) as s:
File "C:\Program Files\Python38\lib\contextlib.py", line 113, in __enter__
return next(self.gen)
File "C:\...\venv\lib\site-packages\pymongo\mongo_client.py", line 1823, in _tmp_session
s = self._ensure_session(session)
File "C:\...\venv\lib\site-packages\pymongo\mongo_client.py", line 1810, in _ensure_session
return self.__start_session(True, causal_consistency=False)
File "C:\...\venv\lib\site-packages\pymongo\mongo_client.py", line 1763, in __start_session
server_session = self._get_server_session()
File "C:\...\venv\lib\site-packages\pymongo\mongo_client.py", line 1796, in _get_server_session
return self._topology.get_server_session()
File "C:\...\venv\lib\site-packages\pymongo\topology.py", line 482, in get_server_session
self._select_servers_loop(
File "C:\...\venv\lib\site-packages\pymongo\topology.py", line 208, in _select_servers_loop
raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: localnpipe:32775: [Errno 11001] getaddrinfo failed
Interestingly, the MongoDbContainer.get_connection_url() method returns a URL with hostname localnpipe, which I suspect the mongo client does not understand. Using pymongo directly, I can connect to the created container using a hostname of localhost.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie bei MongoDbContainer.get_connection_url() und reproduzieren Sie das gezeigte MongoDbContainer-Beispiel unter Windows 10, wobei Sie es mit der direkten PyMongo-Verbindung vergleichen, die localhost verwendet. Als abgeschlossen gilt dies, wenn die zurückgegebene Verbindungs-URL einen Hostnamen verwendet, den PyMongo akzeptiert, und der Insert ohne einen getaddrinfo-Fehler erfolgreich ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, mongodb, python
- Bereich
- databases, testing
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100