आप वास्तव में Session
. के साथ ऐसा नहीं कर सकते बाहर से। Session
आंतरिक रूप से इसका समर्थन करना होगा। इसमें बहुत सारे निजी राज्य को बचाना शामिल होगा, इसलिए यह आपके समय के लायक नहीं हो सकता है।
मैंने निचले स्तर के SQLAlchemy Core इंटरफ़ेस के पक्ष में अधिकांश ORM सामान को पूरी तरह से हटा दिया। उस (या किसी भी dbapi इंटरफ़ेस) का उपयोग करके आप अपने retry_on_deadlock_decorator
का तुच्छ रूप से उपयोग कर सकते हैं डेकोरेटर (उपरोक्त प्रश्न देखें) एक पुन:प्रयास-जागरूक बनाने के लिए db.execute
आवरण।
@retry_on_deadlock_decorator
def deadlock_safe_execute(db, stmt, *args, **kw):
return db.execute(stmt, *args, **kw)
और इसके बजाय
db.execute("UPDATE users SET active=0")
आप करते हैं
deadlock_safe_execute(db, "UPDATE users SET active=0")
जो गतिरोध होने पर स्वचालित रूप से पुनः प्रयास करेगा।