2017-10-12 4 views
0

mysqlとsqlalchemyに奇妙な問題があります。 すべてが時間の罰金99%動作しますが、いくつかの時間私のコードは、この例外を実行して投げるために17分かかる:「コミット」に引き上げ17分後にSQLAlchemyのコミットエラーが発生する

例外:(_mysql_exceptions.OperationalError)(2013、MySQLへ「失われた接続

self.engine = create_engine(uri, echo=False, poolclass=NullPool) 
session_maker = orm.sessionmaker(
    bind=self.engine, 
    expire_on_commit=False, 
    autoflush=False, 
    extension=None 
) 
self.session = self.orm.scoping.scoped_session(session_maker) 
self.session.add(entity) # it's a simple object I want to insert 
self.session.commit() 

私はMySQLでのアクティブ化:

クエリ中 サーバー ')

ここでは、コードです

  • InnoDB内スロークエリログ
  • 印刷デッドロック

私のエラーのためにこれらのログの何もありません。 mysqlのアイドル状態の接続は30分です mysqlフロントロードバランサのアイドル状態の接続は4分です

私のバグについてはもうわかりません。

新しいアイデアはありますか? connect_args

self.engine = create_engine(uri, echo=False, poolclass=NullPool ,connect_args={'connect_timeout': 10}) 

Check here for more info

+0

NullPoolを使用しているので、MySQL接続の問題が解決しないようです。あなたは例外スタックを共有してもらえますか? – herokingsley

答えて

0

使用タイムアウト!!!

+0

私はこの点を確かに見ましたが、mysqlの接続が失われたリンクは表示されません。あなたが私に説明してくれますか? – Kiva

+0

現在のところ、他の明白な理由がないので、タイムアウトの問題があると思っていました。 connect_timeoutを20分以上に設定してテストすることができます –

+0

デフォルトのconnect_timeoutは10秒ですhttps://github.com/PyMySQL/PyMySQL/blob/dc01c6e7cd06cf523d67140b26afea365c130192/pymysql/connections.py#L584だから私はそうは思わないそれは良い道だ。 – Kiva

関連する問題