当我在flask
中使用pymysql
时,当ctrl + f5
刷新我的网页时,我经常会出错。谁能给我一些建议?求你了
这是我的代码:
我定义了处理数据库连接的乐趣
db_host = current_app.config['DB_HOST']
db_port = int(current_app.config['DB_PORT'])
db_name = current_app.config['DB_NAME']
db_passwd = current_app.config['DB_PASSWD']
db_user = current_app.config['DB_USER']
connection = pymysql.connect(host=db_host,
db=db_name,
port=db_port,
user=db_user,
passwd=db_passwd,
cursorclass=pymysql.cursors.DictCursor,
)
def get_db():
if 'db' not in g:
g.db = connection
g.db.ping()
return g.db
@app.teardown_appcontext
def close_db(e=None):
db = g.pop('db', None)
if db is not None:
db.close()
### when I lgoin , I will call get_db(), but there get some error
### auth.py
@bp.before_app_request
def load_logged_in_user():
user_id = session.get('user_id')
if user_id is None:
g.user = None
else:
db = get_db()
db_cursor = db.cursor()
db_cursor.execute('SELECT * FROM users WHERE id = %s', [user_id,])
user_info = db_cursor.fetchone()
g.user = user_info.get("username")
g.is_super_admin = user_info.get("is_superadmin")
role_id = user_info.get("role_id")
db_cursor = db.cursor()
db_cursor.execute('SELECT * FROM roles WHERE id = %s', [role_id,])
role_info = db_cursor.fetchone()
role = role_info.get("roles")
if role == 'ck_admin':
g.is_ck_admin = 1
else:
g.is_ck_admin = 0
大多数时间都是工作,当我用ctrl+f5或ctrl+R连续刷新网页时,我会出错
Traceback (most recent call last):
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1811, in full_dispatch_request
rv = self.preprocess_request()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2087, in preprocess_request
rv = func()
File "D:\ck_web\ck_web\auth\auth.py", line 58, in load_logged_in_user
db = get_db()
File "D:\ck_web\ck_web\utils\db.py", line 27, in get_db
g.db.ping()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 544, in ping
self.connect()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 601, in connect
self._get_server_information()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 980, in _get_server_information
packet = self._read_packet()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 671, in _read_packet
"Lost connection to MySQL server during query")
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
Traceback (most recent call last):
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 1811, in full_dispatch_request
rv = self.preprocess_request()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\flask\app.py", line 2087, in preprocess_request
rv = func()
File "D:\ck_web\ck_web\auth\auth.py", line 58, in load_logged_in_user
db = get_db()
File "D:\ck_web\ck_web\utils\db.py", line 27, in get_db
g.db.ping()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 544, in ping
self.connect()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 602, in connect
self._request_authentication()
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 865, in _request_authentication
self.write_packet(data)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 648, in write_packet
self._write_bytes(data)
File "C:\Users\Meng\.virtualenvs\ck_web-Qdl7sgJU\lib\site-packages\pymysql\connections.py", line 714, in _write_bytes
self._sock.settimeout(self._write_timeout)
AttributeError: 'NoneType' object has no attribute 'settimeout'
我的服务器有很多时间等待连接:
netstat -tnp tcp |findstr "3306"
TCP 172.16.8.81:60946 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60948 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60949 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60951 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60956 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60957 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60959 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60961 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60964 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60965 47.90..8:3306 TIME_WAIT InHost
TCP 172.16.8.81:60967 47.90..8:3306 TIME_WAIT InHost
我不知道我能做什么,所以你能给我一些建议吗?拜托。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐