Tôi có một ứng dụng với Python, Flask và Flask_MysQLDB. Khi tôi thực hiện truy vấn đầu tiên, mọi thứ đều hoạt động tốt, nhưng truy vấn thứ hai luôn gây ra lỗi [2006, máy chủ đã biến mất]. Tất cả mọi thứ tôi tìm thấy trên web đều nói rằng lỗi này là một vấn đề về thời gian chờ, dường như không phải là trường hợp của tôi bởi vì:
1 - Tôi chạy truy vấn thứ hai chỉ vài giây sau khi chạy lần đầu tiên
2 - Cấu hình thời gian chờ của tôi được đặt thành 8 giờ
Tôi không biết đây có thể là gì, đây là mã mà tôi đang chạy:
import os
from flask import Flask
from flask import render_template
from flaskext.mysql import MySQL
import endpoints.usuario as usuario
app = Flask[__name__, static_folder='/root/sftp/atom-projects/flask-example/public/']
app.config['MYSQL_HOST'] = '123'
app.config['MYSQL_USER'] = '123'
app.config['MYSQL_PASSWORD'] = '123'
app.config['MYSQL_DB'] = '123'
app.add_url_rule['/usuarios', 'usuarios', usuario.list_all, methods=['GET']]
@app.errorhandler[404]
def not_found[e]:
return app.send_static_file['index.html']
Đây là mã cho tệp Usuarios:
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
Tôi có điều này chạy trên nginx + gunicorn, đây là nhật ký:
gunicorn -w 1 --reload main:app
[2019-12-19 12:53:21 +0000] [5356] [INFO] Starting gunicorn 20.0.4
[2019-12-19 12:53:21 +0000] [5356] [INFO] Listening at: //127.0.0.1:8000 [5356]
[2019-12-19 12:53:21 +0000] [5356] [INFO] Using worker: sync
[2019-12-19 12:53:21 +0000] [5359] [INFO] Booting worker with pid: 5359
[2019-12-19 12:53:28 +0000] [5359] [ERROR] Error handling request /usuarios
Traceback [most recent call last]:
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request[listener, req, client, addr]
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi[environ, resp.start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app[environ, start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2457, in wsgi_app
ctx.auto_pop[error]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 452, in auto_pop
self.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 438, in pop
app_ctx.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 238, in pop
self.app.do_teardown_appcontext[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2320, in do_teardown_appcontext
func[exc]
File "/usr/local/lib/python3.5/dist-packages/flask_mysqldb/__init__.py", line 100, in teardown
ctx.mysql_db.close[]
MySQLdb._exceptions.OperationalError: [2006, '']
Nếu tôi chạy nó với nhiều công nhân hơn, tôi có thể chạy thêm một vài [tùy thuộc vào số lượng công nhân] truy vấn, điều gì có thể gây ra điều này?
Tôi đã cập nhật bình luận Stackoverflow và thảo luận với OP. Tôi đã thực hiện một số cuộc điều tra và phát hiện ra rằng tôi cũng phải thay đổi sqlalchemy_pool_recycle để ít hơn mysql interactive_timeout. Trên máy chủ Godaddy, Interactive_Timeout đã được đặt thành 60, vì vậy tôi đặt SQLALCHEMY_POOL_RECYCLE thành 50. Tôi nghĩ rằng cả mẫu tôi đã sử dụng và thời gian chờ này là cần thiết để làm cho vấn đề biến mất, nhưng tại thời điểm này tôi không tích cực. Tuy nhiên, tôi khá chắc chắn rằng khi sqlalchemy_pool_recycle lớn hơn interactive_timeout, tôi vẫn bị lỗi hoạt động.
Sau đây là 30 ví dụ mã của mysqldb.operationalerror []. Bạn có thể bỏ phiếu cho những người bạn thích hoặc bỏ phiếu cho những người bạn không thích và đi đến dự án gốc hoặc tệp nguồn bằng cách theo các liên kết trên mỗi ví dụ. Bạn cũng có thể muốn kiểm tra tất cả các chức năng/lớp có sẵn của mô -đun MySQLDB hoặc thử chức năng tìm kiếm.30 code examples of MySQLdb.OperationalError[]. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may also want to check out all available functions/classes of the module MySQLdb, or try the search function
Ví dụ 1
def execute_with_reconnect[self, sql: str, args: Optional[List[ValidSqlArgumentDescription]] = None, fetch_rows: Optional[bool] = False] -> Tuple[int, List[ValidSqlArgumentDescription]]: result = None # Attempt to execute the query and reconnect 3 times, then give up for _ in range[3]: try: p = perf.start[] n = self.cursor.execute[sql, args] perf.check[p, 'slow_query', [f'```{sql}```', f'```{args}```'], 'mysql'] if fetch_rows: rows = self.cursor.fetchall[] result = [n, rows] else: result = [n, []] break except OperationalError as e: if 'MySQL server has gone away' in str[e]: print['MySQL server has gone away: trying to reconnect'] self.connect[] else: # raise any other exception raise e else: # all attempts failed raise DatabaseException['Failed to execute `{sql}` with `{args}`. MySQL has gone away and it was not possible to reconnect in 3 attemps'.format[sql=sql, args=args]] return result
Ví dụ #2
def setup_audit_plugin[instance]: """ Install the audit log plugin. Similarly to semisync, we may or may not use it, but we need to make sure that it's available. Audit plugin is available on 5.5 and above, which are all the versions we support. Args: instance - A hostaddr object """ return # this is intentional; we may re-enable the audit log at some # later date, but for now, we just exit. conn = connect_mysql[instance] cursor = conn.cursor[] try: cursor.execute["INSTALL PLUGIN audit_log SONAME 'audit_log.so'"] except MySQLdb.OperationalError as detail: [error_code, msg] = detail.args # plugin already loaded, nothing to do. if error_code != MYSQL_ERROR_FUNCTION_EXISTS: raise conn.close[]
Ví dụ #3
def query[self, sql, use_dict=True, retry=0]: if retry < 0: retry = 0 retry = int[retry] # the first attempt does not count as 'retry' for i in range[retry + 1]: try: with self[] as conn: return conn_query[conn, sql, use_dict=use_dict] except MySQLdb.OperationalError as e: if len[e.args] > 0 and e[0] in retriable_err: logger.info[ repr[e] + " conn_query error {sql}".format[sql=sql]] continue else: raise else: raise
Ví dụ #4
def _purge_bitmaps_to[lsn]: _say["Purging bitmap files to LSN: %s" % lsn] if not db_connect[]: _error["Failed to connect to server, unable to purge bitmaps."] _exit_code[XB_EXIT_BITMAP_PURGE_FAIL] return False try: cur = xb_mysqldb.cursor[MySQLdb.cursors.DictCursor] cur.execute["PURGE CHANGED_PAGE_BITMAPS BEFORE %s" % lsn] except MySQLdb.OperationalError, e: _error["Got MySQL error %d, \"%s\" at execute" % [e.args[0], e.args[1]]] _error["Failed to purge bitmaps!"] _exit_code[XB_EXIT_BITMAP_PURGE_FAIL] return False
Ví dụ #5
def job_runner[f]: """Accepts any callable function and runs it Catches any exceptions and logs to Rollbar """ result = None try: ensure_mysql_connection_usable[] result = f[] except MySQLdb.OperationalError as e: extra_data = { 'caught_exception' : True, 'attempt_reconnect' : True, } rollbar.report_exc_info[extra_data=extra_data] attempt_mysql_reconnect[] except: rollbar.report_exc_info[] finally: close_connection[] return result
Ví dụ #6
def addAddress[ self ]: """Add address record to database""" if self.entries[ "LAST_NAME" ].get[] != "" and \ self.entries[ "FIRST_NAME"].get[] != "": # create INSERT query command query = """INSERT INTO addresses [ FIRST_NAME, LAST_NAME, ADDRESS, CITY, STATE_PROVINCE, POSTAL_CODE, COUNTRY, EMAIL_ADDRESS, HOME_PHONE, FAX_NUMBER ] VALUES [""" + \ "'%s', " * 10 % \ [ self.entries[ "FIRST_NAME" ].get[], self.entries[ "LAST_NAME" ].get[], self.entries[ "ADDRESS" ].get[], self.entries[ "CITY" ].get[], self.entries[ "STATE_PROVINCE" ].get[], self.entries[ "POSTAL_CODE" ].get[], self.entries[ "COUNTRY" ].get[], self.entries[ "EMAIL_ADDRESS" ].get[], self.entries[ "HOME_PHONE" ].get[], self.entries[ "FAX_NUMBER" ].get[] ] query = query[ :-2 ] + "]" # open connection, retrieve cursor and execute query try: connection = MySQLdb.connect[ db = "AddressBook" ] cursor = connection.cursor[] cursor.execute[ query ] except MySQLdb.OperationalError, message: errorMessage = "Error %d:\n%s" % \ [ message[ 0 ], message[ 1 ] ] showerror[ "Error", errorMessage ] else: cursor.close[] connection.close[] self.clearContents[]
Ví dụ #7
def findAddress[ self ]: """Query database for address record and display results""" if self.entries[ "LAST_NAME" ].get[] != "": # create SELECT query query = "SELECT * FROM addresses " + \ "WHERE LAST_NAME = '" + \ self.entries[ "LAST_NAME" ].get[] + "'" # open connection, retrieve cursor and execute query try: connection = MySQLdb.connect[ db = "AddressBook" ] cursor = connection.cursor[] cursor.execute[ query ] except MySQLdb.OperationalError, message: errorMessage = "Error %d:\n%s" % \ [ message[ 0 ], message[ 1 ] ] showerror[ "Error", errorMessage ] self.clearContents[] else: # process results results = cursor.fetchall[] fields = cursor.description if not results: # no results for this person showinfo[ "Not found", "Nonexistent record" ] else: # display person's info. in GUI self.clearContents[] # display results for i in range[ len[ fields ] ]: if fields[ i ][ 0 ] == "ID": self.IDEntry.set[ str[ results[ 0 ][ i ] ] ] else: self.entries[ fields[ i ][ 0 ] ].insert[ INSERT, str[ results[ 0 ][ i ] ] ] cursor.close[] connection.close[]
Ví dụ #8
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
0Ví dụ #9
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
1Ví dụ #10
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
2Ví dụ #11
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
3Ví dụ #12
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
4Ví dụ #13
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
5Ví dụ #14
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
6Ví dụ #15
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
7Ví dụ #16
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
8Ví dụ #17
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
9Ví dụ #18
gunicorn -w 1 --reload main:app
[2019-12-19 12:53:21 +0000] [5356] [INFO] Starting gunicorn 20.0.4
[2019-12-19 12:53:21 +0000] [5356] [INFO] Listening at: //127.0.0.1:8000 [5356]
[2019-12-19 12:53:21 +0000] [5356] [INFO] Using worker: sync
[2019-12-19 12:53:21 +0000] [5359] [INFO] Booting worker with pid: 5359
[2019-12-19 12:53:28 +0000] [5359] [ERROR] Error handling request /usuarios
Traceback [most recent call last]:
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request[listener, req, client, addr]
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi[environ, resp.start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app[environ, start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2457, in wsgi_app
ctx.auto_pop[error]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 452, in auto_pop
self.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 438, in pop
app_ctx.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 238, in pop
self.app.do_teardown_appcontext[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2320, in do_teardown_appcontext
func[exc]
File "/usr/local/lib/python3.5/dist-packages/flask_mysqldb/__init__.py", line 100, in teardown
ctx.mysql_db.close[]
MySQLdb._exceptions.OperationalError: [2006, '']
0Ví dụ #19
gunicorn -w 1 --reload main:app
[2019-12-19 12:53:21 +0000] [5356] [INFO] Starting gunicorn 20.0.4
[2019-12-19 12:53:21 +0000] [5356] [INFO] Listening at: //127.0.0.1:8000 [5356]
[2019-12-19 12:53:21 +0000] [5356] [INFO] Using worker: sync
[2019-12-19 12:53:21 +0000] [5359] [INFO] Booting worker with pid: 5359
[2019-12-19 12:53:28 +0000] [5359] [ERROR] Error handling request /usuarios
Traceback [most recent call last]:
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request[listener, req, client, addr]
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi[environ, resp.start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app[environ, start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2457, in wsgi_app
ctx.auto_pop[error]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 452, in auto_pop
self.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 438, in pop
app_ctx.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 238, in pop
self.app.do_teardown_appcontext[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2320, in do_teardown_appcontext
func[exc]
File "/usr/local/lib/python3.5/dist-packages/flask_mysqldb/__init__.py", line 100, in teardown
ctx.mysql_db.close[]
MySQLdb._exceptions.OperationalError: [2006, '']
1Ví dụ #20
gunicorn -w 1 --reload main:app
[2019-12-19 12:53:21 +0000] [5356] [INFO] Starting gunicorn 20.0.4
[2019-12-19 12:53:21 +0000] [5356] [INFO] Listening at: //127.0.0.1:8000 [5356]
[2019-12-19 12:53:21 +0000] [5356] [INFO] Using worker: sync
[2019-12-19 12:53:21 +0000] [5359] [INFO] Booting worker with pid: 5359
[2019-12-19 12:53:28 +0000] [5359] [ERROR] Error handling request /usuarios
Traceback [most recent call last]:
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request[listener, req, client, addr]
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi[environ, resp.start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app[environ, start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2457, in wsgi_app
ctx.auto_pop[error]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 452, in auto_pop
self.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 438, in pop
app_ctx.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 238, in pop
self.app.do_teardown_appcontext[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2320, in do_teardown_appcontext
func[exc]
File "/usr/local/lib/python3.5/dist-packages/flask_mysqldb/__init__.py", line 100, in teardown
ctx.mysql_db.close[]
MySQLdb._exceptions.OperationalError: [2006, '']
2Ví dụ #21
gunicorn -w 1 --reload main:app
[2019-12-19 12:53:21 +0000] [5356] [INFO] Starting gunicorn 20.0.4
[2019-12-19 12:53:21 +0000] [5356] [INFO] Listening at: //127.0.0.1:8000 [5356]
[2019-12-19 12:53:21 +0000] [5356] [INFO] Using worker: sync
[2019-12-19 12:53:21 +0000] [5359] [INFO] Booting worker with pid: 5359
[2019-12-19 12:53:28 +0000] [5359] [ERROR] Error handling request /usuarios
Traceback [most recent call last]:
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request[listener, req, client, addr]
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi[environ, resp.start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app[environ, start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2457, in wsgi_app
ctx.auto_pop[error]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 452, in auto_pop
self.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 438, in pop
app_ctx.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 238, in pop
self.app.do_teardown_appcontext[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2320, in do_teardown_appcontext
func[exc]
File "/usr/local/lib/python3.5/dist-packages/flask_mysqldb/__init__.py", line 100, in teardown
ctx.mysql_db.close[]
MySQLdb._exceptions.OperationalError: [2006, '']
3Ví dụ #22
gunicorn -w 1 --reload main:app
[2019-12-19 12:53:21 +0000] [5356] [INFO] Starting gunicorn 20.0.4
[2019-12-19 12:53:21 +0000] [5356] [INFO] Listening at: //127.0.0.1:8000 [5356]
[2019-12-19 12:53:21 +0000] [5356] [INFO] Using worker: sync
[2019-12-19 12:53:21 +0000] [5359] [INFO] Booting worker with pid: 5359
[2019-12-19 12:53:28 +0000] [5359] [ERROR] Error handling request /usuarios
Traceback [most recent call last]:
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request[listener, req, client, addr]
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi[environ, resp.start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app[environ, start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2457, in wsgi_app
ctx.auto_pop[error]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 452, in auto_pop
self.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 438, in pop
app_ctx.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 238, in pop
self.app.do_teardown_appcontext[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2320, in do_teardown_appcontext
func[exc]
File "/usr/local/lib/python3.5/dist-packages/flask_mysqldb/__init__.py", line 100, in teardown
ctx.mysql_db.close[]
MySQLdb._exceptions.OperationalError: [2006, '']
4Ví dụ #23
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
8Ví dụ #24
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
9Ví dụ #25
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
6Ví dụ #26
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
7Ví dụ #27
gunicorn -w 1 --reload main:app
[2019-12-19 12:53:21 +0000] [5356] [INFO] Starting gunicorn 20.0.4
[2019-12-19 12:53:21 +0000] [5356] [INFO] Listening at: //127.0.0.1:8000 [5356]
[2019-12-19 12:53:21 +0000] [5356] [INFO] Using worker: sync
[2019-12-19 12:53:21 +0000] [5359] [INFO] Booting worker with pid: 5359
[2019-12-19 12:53:28 +0000] [5359] [ERROR] Error handling request /usuarios
Traceback [most recent call last]:
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request[listener, req, client, addr]
File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi[environ, resp.start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app[environ, start_response]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2457, in wsgi_app
ctx.auto_pop[error]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 452, in auto_pop
self.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 438, in pop
app_ctx.pop[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/ctx.py", line 238, in pop
self.app.do_teardown_appcontext[exc]
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2320, in do_teardown_appcontext
func[exc]
File "/usr/local/lib/python3.5/dist-packages/flask_mysqldb/__init__.py", line 100, in teardown
ctx.mysql_db.close[]
MySQLdb._exceptions.OperationalError: [2006, '']
9Ví dụ #28
def execute_with_reconnect[self, sql: str, args: Optional[List[ValidSqlArgumentDescription]] = None, fetch_rows: Optional[bool] = False] -> Tuple[int, List[ValidSqlArgumentDescription]]: result = None # Attempt to execute the query and reconnect 3 times, then give up for _ in range[3]: try: p = perf.start[] n = self.cursor.execute[sql, args] perf.check[p, 'slow_query', [f'```{sql}```', f'```{args}```'], 'mysql'] if fetch_rows: rows = self.cursor.fetchall[] result = [n, rows] else: result = [n, []] break except OperationalError as e: if 'MySQL server has gone away' in str[e]: print['MySQL server has gone away: trying to reconnect'] self.connect[] else: # raise any other exception raise e else: # all attempts failed raise DatabaseException['Failed to execute `{sql}` with `{args}`. MySQL has gone away and it was not possible to reconnect in 3 attemps'.format[sql=sql, args=args]] return result0
Ví dụ #29
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
6Ví dụ #30
from flask_mysqldb import MySQL
from flask import Flask, make_response
from flask import current_app
from flask import request
import bcrypt
def list_all[]:
mysql = MySQL[current_app]
cursor = mysql.connection.cursor[]
cursor.execute["select * from usuario"]
records = cursor.fetchall[]
usuarios = []
for row in records:
usuarios.append[{"id":row[0], "nome":row[1], "email":row[2], "senha":row[3], "tipo":row[4]}]
for usuario in usuarios:
tipo = None
cursor.execute["select * from tipo_usuario where id = %s", [usuario['tipo']]]
records = cursor.fetchall[]
for row in records:
usuario['tipo'] = {"id":row[0], "permissao":row[1]}
return make_response[{"msg":'', "error":False, "data":usuarios}]
7