質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1311閲覧

apache+Flask(Python3.6)+mod_wsgi動作環境でdbのセッションが切断されない

kyuacare

総合スコア13

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/08/09 07:07

編集2017/08/09 23:53

apache+Flask+mod_wsgiの環境でDBのセッションを切る方法を教えていただきたいです。

AWS EC2にapache+Flask+mod_wsgiで動作しているWebアプリケーションを作成しました。
ですが、DB(Mysql)の追加を行うと500エラーになります。
おそらくDBセッションが切れていないのが原因だと思われるのですが、
セッションを切るよう処理もいれていて、pythonコマンドから直接Flaskを実行するとしっかりと切れています。
登録等も問題なく行えます。

下記、エラーとコードになります。
ご助言いただけますと幸いです。

sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`hakuran`.`article`, CONSTRAINT `article_ibfk_1` FOREIGN KEY (`type_id`) REFERENCES `article_type` (`name_id`))') [SQL: 'INSERT INTO article (slug, keyword, description, name, content, thumbnail, type_id, status_id, released_at, end_at, created_at, created_user_id, modified_at, modified_user_id) VALUES (%(slug)s, %(keyword)s, %(description)s, %(name)s, %(content)s, %(thumbnail)s, %(type_id)s, %(status_id)s, %(released_at)s, %(end_at)s, %(created_at)s, %(created_user_id)s, %(modified_at)s, %(modified_user_id)s)'] [parameters: {'slug': 'slug1', 'keyword': 'keyword', 'description': '\xe6\xa6\x82\xe8\xa6\x81', 'name': 'title', 'content': '[img]/static/upload/20170809/OAYTMM0-min_3.jpg[/img]', 'thumbnail': '/static/upload/20170809/image_3.png', 'type_id': 'blog', 'status_id': 1, 'released_at': '2017-08-08 16:00:00', 'end_at': None, 'created_at': '2017/08/09-15:47:41', 'created_user_id': 1, 'modified_at': '2017/08/09-15:47:41', 'modified_user_id': 1}]
#!/usr/bin/env python from flask import Flask, render_template, request, session from settings.routes import default from settings import plugins from settings import config from flask_wtf.csrf import CSRFProtect import numpy as np import importlib from flask.ext.sqlalchemy import SQLAlchemy # import settings.routing as Routing app = Flask(__name__) app.config.from_object(config.Master) db = SQLAlchemy(app) CSRFProtect(app) # デフォルトのルーティングを読み込み app.register_blueprint(default.app) # 使用する機能をimport for plugin in plugins.LIST: module = importlib.import_module(plugin) app.register_blueprint(module.app) @app.after_request def close_session(response): # DBのセッションをクローズ db.session.remove() # 元はこれで切っていました。 db.session.close() # こちらは苦し紛れに追加しましたが、効果なしでした。 return response # return render_template('index.html',path=path) # ここがサーバサイドからクライアントサイドへ何かを渡す時のポイントになります if __name__ == "__main__": # Webサーバ立ち上げ # db.init_app(app) app.run(debug=True)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

DBのcommit等を行っていたものが、別ファイルのdbインスタンスであり
そのインスタンスにてcloseをしたところセッションの切断が行えました。

投稿2017/08/09 23:54

kyuacare

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問