2016-05-26 36 views
1

我有一個python web應用程序,其中應用程序連接到遠程數據庫。每當mysql服務重新啓動時,uwsgi如何重新建立與遠程mysql數據庫的連接

應用:flask + uwsgi + nginx。

數據庫:mysql(遠程)。 該應用程序公開了從遠程數據庫爲其提供數據的rest api。

數據庫每天恢復後,mysql服務在遠程數據庫中重新啓動。直到我在我的應用程序手動重啓uwsgi服務我的應用程序和遠程數據庫休息,並開始投擲錯誤信息

MySQL server has gone away. 

之間的連接

sudo service uwsgi restart 

在遠程數據庫MySQL服務重新啓動之間的時間和在我的系統中重新啓動uwsgi服務是停機時間

只要mysql服務重新啓動,我的應用程序是否可以重新建立連接?

請提出任何解決方案?

+0

在深入解釋說明。大多數連接池應該能夠處理重新打開的關閉連接。 – dirn

+0

我真的有必要每天重新啓動數據庫嗎?如果確實如此,如果它是由腳本完成的,請讓腳本通過ssh重新啓動uwsgi? – henrikstroem

回答

0

這真的取決於你的方式連接到數據庫

如果你正在使用流行的ORM:

  • SQLAlchemy的ORM

    引擎= 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

+0

我沒有使用ORM。 – vij555

相關問題