Flask-SQLAlchemy "Mysql Server Has Gone"

I have a Flask server deployment which are access by only a few users in an infrequent manner, and I frequently bump into "MySQL server has gone away” when no one used it for a few days.

Initially I though it was a uwsgi problem (applying --lazy and --lazy-apps param to uwsgi), but sadly it didn't work.

Then I suspect it could be a SQLAlchemy problem or Flask-SQLAlchemy problem, which leads me to this article.

Flask-SQLAlchemy seems to use scoped session, so that is covered.

I found someone reported the same problem, where the patch seems to be applied on the package I downloaded (0.16).

Sadly, the patch is not applied to the version I had downloaded (the setup.py version number is not updated to 0.8); and the driver I happend to use is "mysql+mysqldb".

or I could set the settings manually through the Flask variable SQLALCHEMY_POOL_RECYCLE

I have not confirmed this solution works yet, have to observer for a few days ;)

Update 2012-02-26: Error "Can't reconnect until invalid transaction is rolled back" popup once in a while ("MySQL server has gone away" is observed as well), where refreshing the page doesn't make the problem go away (need restart).

Based on this, besides SQLALCHEMY_POOL_RECYCLE, the next culprit seems to be session is closed/remove before end of request (this is tricky).

❤️ Is this article helpful?

Buy me a coffee ☕ or support my work via PayPal to keep this space 🖖 and ad-free.

Do send some 💖 to @d_luaz or share this article.

✨ By Desmond Lua

A dream boy who enjoys making apps, travelling and making youtube videos. Follow me on @d_luaz

👶 Apps I built

Travelopy - discover travel places in Malaysia, Singapore, Taiwan, Japan.