我有一个Flask后端,同时我正在尝试将MySQL连接到MongoDb。然而,我一直在经历这个错误。我也在使用数据库文件中实例化的sqlalchemy。对MySQL服务器的请求很好,但对mongodb的get请求返回以下错误:
MongoDB目前托管在EC2上,而我的flask应用程序是本地的。
pymongo.errors.ServerSelectionTimeoutError:
app.py:
from flask import Flask
from flask_restful import Api
from db import db
from books.resource import Review, ReviewList
from flask_mongoengine import MongoEngine
import setting.mongo_setup as mongo_setup
app = Flask(__name__)
# mongo_setup.global_init()
# app.config.from_pyfile('setting/mongo_setting.py')
app.config['MONGODB_SETTINGS'] = {
'db': 'meta',
'host': 'XXXXXXXX',
'port': XXX
}
app.config.from_pyfile('setting/sql_setting.py')
mongo_db = MongoEngine()
mongo_db.init_app(app)
db.init_app(app)
api = Api(app)
api.add_resource(Review, '/review/')
if __name__ == '__main__':
app.run(port=5000, debug=True)
sql_setting.py:
import os
MYSQL_HOST = 'XXXXXXX'
MYSQL_PORT = XXXXX
DBNAME = "XXXXX"
MYSQL_USERNAME = "XXXXXX"
MYSQL_PASSWORD = "XXXXXX"
MYSQL_URI = "mysql+pymysql://%s:%s@%s:3306/%s" % (MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_HOST, DBNAME)
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = MYSQL_URI```
您可以telnet到mongo主机吗
telnet x.x.x.x 27017
(其中x.x.x.x
是mongo ip地址(
图像中的错误通常发生在连接问题/端口/连接未列入白名单/防火墙或安全组中不允许时
a(
app.config['MONGODB_SETTINGS'] = {
#__snip__
'connect': 'direct',
}
可能会起作用
b( 您应该从代码和错误图像中省略mongoIP地址。