当我收到超过 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
当我尝试使用单个全局连接执行相同的代码时,我收到数据包乱序错误,表明游标正在读取彼此的响应。
我认为正确的解决方案是为查询创建某种任务队列,但不确定如何实现。