jaz*_*lue 5 python mysql flask-sqlalchemy
我正在使用flask-SQLAlchemy作为我的webservice.我想有一个端点,检查使用的MySQL数据库可用性/响应性的状态.我该怎么办呢?谢谢.
以下是我的代码的相关部分:
mywebsvc.py
...
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://mylogin:mypw@localhost/mydb'
db.init_app(app)
...
Run Code Online (Sandbox Code Playgroud)
models_shared.py
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
Run Code Online (Sandbox Code Playgroud)
models.py
from models_shared import db
class Car(db.Model):
id = db.Column(db.Integer, primary_key=True)
make = db.Column(db.String(64), index=True, unique=True)
color = db.Column(db.String(64), index=False, unique=False)
Run Code Online (Sandbox Code Playgroud)
routes.py
...
@app.route('/is_available', methods=['GET'])
def is_available():
#???
Run Code Online (Sandbox Code Playgroud)
有一个奇特的库,用于编写服务的端点检查条件 - healthcheck.
它可用于断言您的依赖项已启动并正在运行,并且您的应用程序可以响应HTTP请求.Healthcheck功能通过用户定义的烧瓶路径公开,因此您可以使用外部监控应用程序(Monit,Nagios,Runscope等)来检查应用程序的状态和正常运行时间.
您可以使用它而不是手动创建端点,因为有一些开箱即用的功能(例如EnvironmentDump).
在我的应用程序中,我有同样的需求,所以我实现检查数据库是否响应
app = Flask(__name__)
# wrap the flask app and give a heathcheck url
health = HealthCheck(app, "/healthcheck")
def health_database_status():
is_database_working = True
output = 'database is ok'
try:
# to check database we will execute raw query
session = DatabaseSession.get_database_session()
session.execute('SELECT 1')
except Exception as e:
output = str(e)
is_database_working = False
return is_database_working, output
health.add_check(health_database_status)
Run Code Online (Sandbox Code Playgroud)
正如我所见,在您的应用程序中,您可以执行查询db.engine.execute('SELECT 1').