繁体   English   中英

仅使用一个连接的python flask mysql

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM