я в настоящее время есть два способа, которые я называю одновременно (через HTTP в Java)Колба приложение GET возвращенная же вещь дважды
По какой-то причине, есть случай, в котором getAcc() возвращает ту же информацию учетной записи в два раза ? Я не совсем понимаю, почему это так.
Я думаю, что возможно, что второй вызов get_account происходит до того, как вызывается toggleUse(), и поэтому переменная IN_USE еще не установлена на 1). Кто-нибудь знает, как это исправить? Я сделал некоторые чтения в Интернете, и я считаю, что этот термин является Сериализация. Я видел это в основном в отношении баз данных, но почти не видел ссылок на то, как «заблокировать» метод. Я мог бы создать блокировку и сделать «с блокировкой:», но я слышал, что это не путь.
@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()
Я думаю, что то же самое, что и Кельвин, убедитесь, что исключение в get_account() вызывает его сам. Я предлагаю вам использовать отладчик, PyCharm - это хорошая среда разработки, которая обеспечивает калькулятор в режиме отладки. Вы можете скачать сообщество (бесплатно). Кроме того, запустите SQL-код в MySQL, чтобы узнать, сколько строк оно вычисляет. –
Какие методы и в каком порядке вы звоните? – syntonym