Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या यह थ्रेड-स्थानीय फ्लास्क-SQLAchemy सत्र के कारण MySQL सर्वर त्रुटि दूर हो गया है?

एक जोड़ने का प्रयास करें

app.teardown_request(Exception=None)

डेकोरेटर, जो प्रत्येक अनुरोध के अंत में निष्पादित होता है। मैं वर्तमान में इसी तरह की समस्या का सामना कर रहा हूं, और ऐसा लगता है कि आज मैंने इसका उपयोग करके वास्तव में इसका समाधान कर लिया है।

@app.teardown_request
def teardown_request(exception=None):
    Session.remove()
    if exception and Session.is_active:
        print(exception)
        Session.rollback()

मैं Flask-SQLAlchemy का उपयोग नहीं करता केवल कच्चा SQLAlchemy , इसलिए इसमें आपके लिए मतभेद हो सकते हैं।

डॉक्स से

मेरे मामले में, मैं एक नया scoped_session open खोलता हूं प्रत्येक अनुरोध के लिए, मुझे प्रत्येक अनुरोध के अंत में इसे हटाने की आवश्यकता होती है (Flask-SQLAlchemy इसकी आवश्यकता नहीं हो सकती है)। साथ ही, teardown_request फ़ंक्शन को Exception पास किया जाता है यदि कोई संदर्भ के दौरान हुआ है। इस परिदृश्य में, यदि कोई अपवाद होता है (संभावित रूप से लेन-देन को हटाया नहीं जा सकता है, या रोलबैक की आवश्यकता है), तो हम जांचते हैं कि क्या कोई अपवाद था, और रोलबैक।

अगर यह मेरे अपने परीक्षण के लिए काम नहीं करता है, तो अगली चीज़ जो मैं करने जा रहा था वह था session.commit() प्रत्येक टियरडाउन पर, बस यह सुनिश्चित करने के लिए कि सब कुछ फ्लश हो रहा है

अद्यतन:ऐसा भी प्रतीत होता है कि MySQL 8 घंटे के बाद कनेक्शन को अमान्य कर देता है, जिससे सत्र दूषित हो जाता है।

सेट pool_recycle=3600 आपके इंजन कॉन्फ़िगरेशन पर, या सेटिंग


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैक ओएस एक्स . पर पायथन और माइस्क्ल

  2. पुनरावर्ती कार्यों/कैलेंडर को विकसित/प्रबंधित/डिज़ाइन करने का सर्वोत्तम तरीका

  3. चेतावनी:mysqli_connect ():(HY000/2002):ऐसी कोई फ़ाइल या निर्देशिका नहीं

  4. PHP में MySQL डेटाबेस का बैकअप लें और पुनर्स्थापित करें

  5. कैसे स्वचालित रूप से सभी संदर्भ पंक्तियों को हटाने के लिए अगर मूल पंक्ति mysql में हटा दी जाती है?