首页 > 解决方案 > 连接被拒绝 sqlalchemy Flask

问题描述

我在 Ubuntu 18.0、flask_sqlalchemy 和 MYSQL 数据库上运行烧瓶应用程序,当我尝试登录时,有时会出现 500 内部服务器错误,我必须重新启动 MYSQL 服务器和 Apache。

我检查了 serevr 日志,我发现了这个错误,我无法理解它 error.log

ERROR:flask.app:Exception on / [POST], referer: {domain.com}
 Traceback (most recent call last):, referer: {domain.com}
   File "/usr/local/lib/python3.6/dist-packages/pymysql/connections.py", line 583, in connect, referer: {domain.com}
     **kwargs), referer: {domain.com}
   File "/usr/lib/python3.6/socket.py", line 724, in create_connection, referer: {domain.com}
     raise err, referer: {domain.com}
   File "/usr/lib/python3.6/socket.py", line 713, in create_connection, referer: {domain.com}
     sock.connect(sa), referer: {domain.com}
ConnectionRefusedError: [Errno 111] Connection refused, referer: {domain.com}
, referer: {domain.com}
During handling of the above exception, another exception occurred:, referer: {domain.com}
, referer: {domain.com}
Traceback (most recent call last):, referer: {domain.com}
 File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/base.py", line 2158, in _wrap_pool_connect, referer: {domain.com}
   return fn(), referer: {domain.com}
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1805, in full_dispatch_request, referer: {domain.com}
  rv = self.dispatch_request(), referer: {domain.com}
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1791, in dispatch_request, referer: {domain.com}
  return self.view_functions[rule.endpoint](**req.view_args), referer: {domain.com}
File "/var/www/Dashboard/dashboard/routes.py", line 23, in login, referer: {domain.com}
  User = db.session.query(Users).filter_by(Email = request.form['Email']).first(), referer: {domain.com}
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager 

app = Flask(__name__)
app.config['SECRET_KEY'] = 'SECRET_KEY'
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://username:password@localhost/database"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'

from dashboard import routes
from dashboard import api

标签: pythonflasksqlalchemy

解决方案


每次我执行 POST 或 GET 请求时,我的内存都会导致 MySQL 服务器崩溃。

我使用的是 Ubuntu DigitalOcean droplet 25GB 存储和 1GB RAM,以及 APACHE 服务器和 MYSQL 服务器。

我所做的是在独立的 Droplet 中运行 MySQL 服务器并远程连接烧瓶应用程序,它工作非常稳定。

谢谢,


推荐阅读