当我try 在我的FASK应用程序中执行GET或POST时,出现以下错误.
Mongo:27017:[Errno-2]名称不能解析(配置的超时: SocketTimeoutMS:20000.0ms,ConnectTimeoutMS:20000.0ms),超时: 30s,拓Flutter 描述:<;拓Flutter 描述ID: 657c619ae1e4696f65e708c2,拓Flutter 图类型:未知,服务器: [<;ServerDescription(‘Mongo’,27017)SERVER_TYPE:未知,实时:无, 错误=自动侦测(‘Mongo:27017:[Errno-2]名称未解析 (配置超时:socketTimeoutMS:20000.0ms,ConnectTimeoutMS: 20000.0ms)‘)>;]>;
我的app.py
from flask import Flask, jsonify
from pymongo import MongoClient
from loguru import logger
from bson.json_util import dumps
app = Flask(__name__)
MONGO_URI = "mongodb://admin:admin@mongo:27017/"
@app.route('/', methods=['GET'])
def get_data():
try:
logger.info('Connecting to MongoDB')
client = MongoClient(MONGO_URI)
logger.info('Connected to MongoDB')
db = client.test
collection = db.test
data = collection.find({})
serialized_data = dumps(data)
logger.info('Data retrieved successfully')
return jsonify({"data": serialized_data}), 200
except Exception as e:
return jsonify({"error": f"{str(e)}"}), 500
@app.route('/', methods=['POST'])
def create_data():
try:
logger.info('Connecting to MongoDB')
client = MongoClient(MONGO_URI)
logger.info('Connected to MongoDB')
db = client.test
collection = db.test
data = collection.insert_one({"name": "test"})
logger.info('Data created successfully')
return jsonify({"data": data}), 200
except Exception as e:
return jsonify({"error": f"{str(e)}"}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0')
Docker-作文
version: '3.9'
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "5000:5000"
depends_on:
- mongodb
- nginx
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
mongodb:
image: mongo:latest
ports:
- "27017:27017"
environment:
- MONGO_INITDB_DATABASE=test
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin
- MONGO_URI=mongodb://admin:admin@mongodb:27017/test
volumes:
- mongodb_data:/data/db
volumes:
mongodb_data:
表示存在连接错误的错误对我来说没有多大意义,因为生成的日志(log)显示请求通过连接线.
有谁知道怎么解这个题吗?