2016-05-26 7 views
1

私はpython Webアプリケーションを持っています。ここで、アプリケーションはリモートデータベースに接続します。mysqlサービスが再起動されるたびにuwsgiがリモートのmysqlデータベースとの接続を再確立する方法

アプリケーション:flask + uwsgi + nginx。

データベース:mysql(リモート)。 アプリケーションは、リモートデータベースからデータが提供される残りのAPIを公開します。

dbの復元後毎日、mysqlサービスがリモートデータベースで再起動されます。私のアプリケーションとリモートデータベースの休憩の間の接続、およびそれは私が手動でリモートデシベルに自分のアプリケーションでuwsgiサービス

sudo service uwsgi restart 

にMySQLサービスの再起動間の期間を再起動するまで、エラーメッセージ

MySQL server has gone away. 

を投げて起動し、私のシステムでのuwsgiサービスの再起動は、のダウンタイムです。

mysqlサービスを再起動するとすぐに私のアプリケーションが接続を確立できますか?

解決策をお教えください。

+0

MySQLのドキュメントで詳しく説明されています。ほとんどの接続プールは、閉じた接続の再オープンを処理できる必要があります。 – dirn

+0

毎日データベースを再起動する必要がありますか?それが本当なら、もしそれがスクリプトで終わったら、スクリプトにssh経由であなたのuwsgiを再起動させてもらえますか? – henrikstroem

答えて

0

それは本当にあなたが人気のORM使用している場合は、あなたのデータベースに

を接続する方法によって異なります。

  • SQLAlchemyのORM

    エンジン= create_engine( 'mysqlの+のMySQLdbを:// ... '、pool_recycle = 3600)

    ドキュメントhere

  • に記載されているように
  • ピーウィー

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

    ドキュメントに記載されているようhere

問題は、データベースに接続する方法here

+0

私はORMを使用していません。 – vij555

関連する問題