gpt4 book ai didi

python - Flask 应用程序 GET 返回相同的东西两次

转载 作者:太空狗 更新时间:2023-10-29 21:06:42 27 4
gpt4 key购买 nike

我目前有两种方法可以同时调用(通过 Java 中的 HTTP)

出于某种原因,有一个实例 getAcc() 两次返回相同的帐户信息?我不太明白这是为什么。

我认为对 get_account 的第二次调用可能发生在调用 toggleUse() 之前(因此 IN_USE 变量尚未设置为 1)。有谁知道如何解决这一问题?我在网上做了一些阅读,我相信术语是序列化。我看到这主要是关于数据库的,但几乎没有看到关于如何“锁定”该方法的引用。我可以创建一个锁并执行“with lock:”,但我听说这不是可行的方法。

@app.route('/getAcc')
def get_account():
try:
cursor.execute("SELECT USER,PASS FROM ACCOUNTS WHERE TUT_DONE = 0 AND IN_USE = 0 LIMIT 1;")
return jsonify(data=cursor.fetchall())
except (AttributeError, MySQLdb.OperationalError):
open_db()
return get_account()


@app.route('/toggleUse', methods=['POST'])
def toggle_use():
try:
username = request.values['username']
update_stmt = (
"UPDATE ACCOUNTS SET IN_USE = !IN_USE WHERE USER = (%s)"
)
data = (username,)
cursor.execute(update_stmt,data)
db.commit()
return 'Account ' + str(username) + ' IN_USE toggled'

except (AttributeError, MySQLdb.OperationalError):
open_db()
return toggle_use()

最佳答案

我必须对其进行测试,但怀疑您除了打开数据库连接并调用自身外还有其他问题。

您是否尝试过创建一个连接,为您提供一个您可以直接调用的池?

connection = pyodbc.connect(connection_string, autocommit=True) #I think you can set autocommit here.

@app.route('/getAcc')
def get_account():
try:
cursor = connection.cursor()
cursor.execute("SELECT USER,PASS FROM ACCOUNTS WHERE TUT_DONE = 0 AND IN_USE = 0 LIMIT 1;")
return jsonify(data=cursor.fetchall())
except (AttributeError, MySQLdb.OperationalError):
# Return a meaningful message

其他功能也是一样。

关于python - Flask 应用程序 GET 返回相同的东西两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com