Fai*_*mon 0 python pymongo docker dockerfile docker-compose
我正在尝试运行 Flask 和 MongoDb 应用程序并收到以下错误。这是我可以使用获取的日志sudo docker logs <container-name>
self._select_servers_loop(
File "/usr/local/lib/python3.10/site-packages/pymongo/topology.py", line 227, in _select_servers_loop
raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: db:27017: timed out, Timeout: 30s, Topology Description: <TopologyDescription id: 626fc61ba785d70a66a1ea12, topology_type: Unknown, servers: [<ServerDescription ('db', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('db:27017: timed out')>]>
Run Code Online (Sandbox Code Playgroud)
当我尝试访问本地主机时,我在日志中收到上述错误。当我尝试在浏览器中访问本地主机时,我看到connection was reset
错误,然后我看到生成了上述日志。
这是我的 app.py 文件
from flask_restful import Api, Resource
import os
from pymongo import MongoClient
app = Flask(__name__)
api = Api(app)
client = MongoClient("mongodb://db:27017", port=27017, directConnection=True)
db = client.aNewDB
UserNum = db["UserNum"]
UserNum.insert_one({
'num_of_users':0
})
class Visit(Resource):
def get(self):
prev_num = UserNum.find({})[0]['num_of_users']
new_num = prev_num + 1
UserNum.update_one({}, {"$set":{"num_of_users":new_num}})
return str("Hello user" + str(new_num))
api.add_resource(Visit,"/")
if __name__=="__main__":
port = int(os.environ.get('PORT',5000))
app.run(host='0.0.0.0', port=port)
Run Code Online (Sandbox Code Playgroud)
这是我的 docker-compose.yml:
services:
web:
build: ./web
ports:
- "5000:5000"
depends_on:
- db
db:
build: ./db
ports:
- '27017-27019:27017-27019'
Run Code Online (Sandbox Code Playgroud)
任何帮助都将不胜感激。
小智 5
我面临着类似的问题。就我而言,我已通过隧道将 mongoDB 副本连接到本地,我可以使用 Compass 应用程序访问它。但无法通过 Pymongo 访问它。我使用的是本地主机:端口、用户 ID 和密码。后来只是从指南针复制了连接字符串并尝试了,它成功了!
客户端= MongoClient('mongodb://USER:PASSWORD@localhost:PORT/?authSource=admin&readPreference=secondary&directConnection=true&ssl=false')
归档时间: |
|
查看次数: |
8440 次 |
最近记录: |