8

ここに示すように、Flask で SQLAlchemy を使用しています: http://flask.pocoo.org/docs/patterns/sqlalchemy/

最初に Firefox で実行し、次に Chrome で実行する Selenium テスト スイートがあります。

各ブラウザでテストを開始する前に、テスト データベース (PostgreSQL) 内のテーブルを削除して作成します。

最初のブラウザーでは完全に実行されますが、2 番目のブラウザーでは、SQL の作成/削除の試行がフリーズするだけで、エラーは表示されません。

これは SQLAlchemy セッションが開いているためだと思いますが、それは正しいですか?

4

2 に答える 2

3

これは SQLAlchemy セッションが開いているためだと思いますが、それは正しいですか?

それはほとんどの場合です。確認するには、postgresデータベースに接続して実行しますSELECT * FROM pg_stat_activity

DB の作成/削除をどのように処理するかはわかりませんが、チェックアウトされた接続が返されたことを確認した後 (たとえば、 を使用)、SQLAlchemy 接続プールで呼び出したい場合がありdispose()ます。recreate()session.close()

于 2012-12-20T16:37:30.243 に答える
0

これは、SQLAlchemy と Postgres で Flask unittest を実行しているときに私にも起こることです。多くの場合、原因は例外であり、上方に伝播せず、行き詰まりました。この例外により、テストが適切にクリーンアップされなくなり、フリーズも停止します。

テスト スイートを作成している場合は、スーツでデバッグ メソッドを呼び出すと、例外が表示されます。このメソッドのドキュメントをここにリンクしました。

開いている Sqlalchemy セッションの観察も理由になる可能性があります。明日、この観察に基づいて私の理論をテストします。いくつかの疑問が解消されたら、ここに投稿します。

例外でデバッガーをトリガーする方法を示すこの回答を見てください。問題を特定するのに役立つかもしれません。

于 2012-12-20T19:17:27.360 に答える