每当重启mysql服务时,uwsgi如何重新建立与远程mysql数据库的连接

时间:2016-05-26 09:22:39

标签: python mysql web-services flask uwsgi

我有一个python Web应用程序,其中,应用程序连接到远程数据库。

应用:烧瓶+ uwsgi + nginx。

数据库:mysql(远程)。 该应用程序公开了从远程数据库提供数据的rest api。

db恢复后,每天都会在远程数据库中重启mysql服务。我的应用程序和远程数据库之间的连接中断,它开始抛出错误消息

MySQL server has gone away.

直到我在我的应用程序中手动重启uwsgi服务

sudo service uwsgi restart  

远程数据库中的mysql服务重启和我系统中的uwsgi服务重启之间的持续时间是停机时间

重新启动mysql服务后,我的应用程序是否可以重新建立连接?

请建议任何解决方案?

1 个答案:

答案 0 :(得分:0)

这实际上取决于您连接数据库的方式

如果您使用的是流行的ORM:

  • SQLAlchemy ORM

    engine = create_engine('mysql + mysqldb:// ...',pool_recycle = 3600)

    如文档here

  • 中所述
  • Peewee

    @app.before_request
       def _db_connect():
           database.connect()
    
    
    @app.teardown_request
    def _db_close(exc):
        if not database.is_closed():
            database.close()
    

    如文档here

  • 中所述

问题在mysql文档here

中有详细解释