मैं वर्तमान में Flask-uWSGI-Websockets का उपयोग कर रहा हूं ताकि मेरे आवेदन के लिए वेबस्केट कार्यक्षमता प्रदान की जा सके। मैं अपने MySQL डेटाबेस से कनेक्ट करने के लिए फ्लास्क-स्क्लाक्लेमी का उपयोग करता हूं।फ्लास्क-स्क्लाक्लेमी और गेवेन्ट mysql कनेक्शन बंद नहीं कर रहे हैं
फ्लास्क-यूडब्ल्यूएसजीआई-वेबसाइटॉक वेबसाइकिल कनेक्शन प्रबंधित करने के लिए भूगर्भ का उपयोग करता है।
समस्या जो मैं वर्तमान में कर रहा हूं वह यह है कि जब एक वेबसाइकिल कनेक्शन समाप्त हो जाता है, तो फ्लास्क-स्क्लाक्लेमी द्वारा स्थापित डेटाबेस कनेक्शन जीवित रहेगा।
मैंने प्रत्येक वेबसाइकिल कनेक्शन के बाद db.session.close()
और db.engine.dispose()
पर कॉल करने का प्रयास किया है, लेकिन इसका कोई प्रभाव नहीं पड़ा।
मेरे ऐप की शुरुआत में gevent.monkey.patch_all()
पर कॉल करने से कोई फर्क नहीं पड़ता है।
from gevent.monkey import patch_all
patch_all()
from flask import Flask
from flask_uwsgi_websocket import GeventWebSocket
from flask_sqlalchemy import SQLAlchemy
app = Flask()
ws = GeventWebSocket()
db = SQLAlchemy()
db.init_app(app)
ws.init_app(app)
@ws.route('/ws')
def websocket(client):
""" handle messages """
while client.connected is True:
msg = client.recv()
# do some db stuff with the message
# The following part is executed when the connection is broken,
# i tried this for removing the connection, but the actual
# connection will stay open (i can see this on the mysql server).
db.session.close()
db.engine.dispose()
पर क्या आप वाकई रहे सत्र समापन कोड तक पहुँच जाता है? क्या यह हो सकता है कि इसके बजाय एक अपवाद उठाया जा रहा है? इस तरह के मामले में मैं 'समापन' कथन के शरीर में सत्र समापन कोड डालूंगा – architectonic