【发布时间】:2019-08-27 18:59:48
【问题描述】:
当我收到超过 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
当我尝试使用单个全局连接执行相同的代码时,我收到数据包乱序错误,表明游标正在读取彼此的响应。
我认为正确的解决方案是为查询创建某种任务队列,但不确定如何实现。
【问题讨论】:
-
我把标题说成“只有一个连接”,但实际上我最多可以达到 20 个,理想情况下我会使用并行连接的解决方案
标签: python mysql python-3.x multithreading flask