python只使用一个连接

2024-06-16 08:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

当我收到超过100个并发请求时,mysql.connect()会产生一个“连接太多”错误。我使用的是一个托管数据库,它不会给我一个根用户来增加连接限制。下面是我需要替换的临时补丁。你知道吗

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

当我尝试使用一个全局连接来执行相同的代码时,我得到了一个数据包无序错误,表明游标正在读取彼此的响应。你知道吗

我认为正确的解决方案是为查询创建某种任务队列,但不确定如何实现。你知道吗


Tags: 用户import数据库appcloseconnect错误mysql
1条回答
网友
1楼 · 发布于 2024-06-16 08:30:14

这是我目前的解决方案,它仍然是坏的,但至少它不会消耗所有可用的连接,导致其他事情中断。你知道吗

# 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

相关问题 更多 >