Anda tidak dapat melakukannya dengan Session
dari luar. Session
harus mendukung ini secara internal. Ini akan melibatkan penghematan banyak negara pribadi, jadi ini mungkin tidak sepadan dengan waktu Anda.
Saya benar-benar membuang sebagian besar barang ORM demi antarmuka SQLAlchemy Core tingkat yang lebih rendah. Dengan menggunakan itu (atau bahkan antarmuka dbapi apa pun), Anda dapat dengan mudah menggunakan retry_on_deadlock_decorator
Anda dekorator (lihat pertanyaan di atas) untuk membuat db.execute
retry-aware pembungkus.
@retry_on_deadlock_decorator
def deadlock_safe_execute(db, stmt, *args, **kw):
return db.execute(stmt, *args, **kw)
Dan bukannya
db.execute("UPDATE users SET active=0")
kamu bisa
deadlock_safe_execute(db, "UPDATE users SET active=0")
yang akan mencoba lagi secara otomatis jika terjadi deadlock.