![](/img/trans.png)
[英]Flask Python Gunicorn MySql - MySQL Connection not available
[英]python flask mysql using only one connection
当我收到超过100个并发请求时, mysql.connect()
会产生“连接过多”错误。 我正在使用一个托管数据库,该数据库没有给我root用户来增加连接限制。 以下是我需要替换的临时修复程序。
import flaskext.mysql
@app.route("/filter")
def filter_ep():
# FIXME: hot fix for "too many connections" error
conn = None
errs = 0
while not conn and errs < 100:
try:
conn = mysql.connect()
except Exception as e:
errs += 1
time.sleep(0.001)
cur = con.cursor()
# pull `results` from database
cur.close()
conn.close()
return results
当我尝试使用单个全局连接执行相同的代码时,出现数据包乱序错误,提示游标正在读取彼此的响应。
我认为正确的解决方案是为查询创建某种任务队列,但不确定如何实现。
这是我当前的解决方案,它仍然很糟糕,但至少不会消耗所有可用的连接,导致其他问题中断。
# FIXME: this is still bad
conn = None
errs = 0
# for 1s try to connect until there's an open conn in queue
while not conn and errs < 100:
try:
conn = mysql.connector.connect(pool_name="ropool", pool_size=4, **db.mysql_connection_args)
except Exception as e:
errs += 1
time.sleep(0.01)
if not conn:
return json.dumps({"errorMessage" : "failed to connect to database"}), 500
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.