3

Postgresql がシリアル化の失敗のためにトランザクションをロールバックすると、DBAPIError の形で SQL Alchemy にバブルアップします (新しいバージョンでは代わりに OperationalError が発生すると思います)。しかし、問題がシリアル化可能性 (トランザクションを再試行できる場合) なのか、それとも別の問題 (ユーザーにエラーを表示したい場合) なのかを知りたいです。

例外をキャッチして、その文字列表現を読み取ることができました。

try:
    ... # Statement causing a serialization failure
except DBAPIError as e:
    if str(e).find("could not serialize access due to read/write dependencies among transactions") >= 0:
        # Retry
    else:
        # Report error

しかし、これは堅牢ではなく、文字列をチェックするのは間違っていると思います。

より良い方法はありますか?

4

0 に答える 0