问题
While using Flask-SQLAlchemy I get the error 'QueuePool limit of size 10 overflow 10 reached, connection timed out' consistently, after some time. I tried to increase connection pool size, but it only deferred the problem.
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
initialize_db(app)
db = SQLAlchemy()
def initialize_db(app):
db.init_app(app)
SQLALCHEMY_POOL_SIZE = 100
回答1:
I figured out the problem. The issue was sometimes database connection was going to lost state, which is causing pool size to be Exhausted after some interval.
To fix the issue I made the MySQL server configuration change for query timeout and made it 1 second.
After 1 second if the query didn't respond it will throw Exception and I added except block in code where that query was invoked(In my case it was GET query). In the Except block, I issued rollback command.
回答2:
I just had this issue.
My situation
- I have not yet launched my website, and so I am spending almost all of my time interacting with the local version, which is being run from PyCharm (i.e. on my computer), and so I only noticed the error on my local version of the site, and I didn't even try to see if it would also occur on the PythonAnywhere-hosted production version of the site.
- I am using a MySQL database.
- IIRC I first noticed the problem when I started running frequent (every 10 seconds) API calls from my front-end JavaScript.
- I had
debug=Falsein myapp.run(), so it wasn't being caused bydebug=True, which is something suggested elsewhere.
How I fixed it
The problem went away when I got rid of threaded=True in my app.run().
- So, previously it looked like this:
app.run(debug=False, threaded=True)
- and I changed it to look like this:
app.run(debug=False)
来源:https://stackoverflow.com/questions/38822829/sqlalchemy-raises-queuepool-limit-of-size-10-overflow-10-reached-connection-tim