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

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

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

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

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

Q&A

解決済

1回答

704閲覧

herokuで公開されているページに書き込まれた情報をデータベースとして保存したいがエラーとなる。

meJ15

総合スコア55

Flask

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

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

0グッド

0クリップ

投稿2019/03/15 02:22

編集2019/03/27 00:34

前提・実現したいこと

Herokuを使ってpythonのflaskで作ったウェブアプリケーションを公開することができました。
要約アプリ(クロムでしか動かないです)
次はこのウェブアプリケーションに書き込まれた情報と結果をDBに書き込み、それをherokuのサーバーに保存。その後参照したいと考えています。

下のようにユーザが書き込んだ情報や日付と結果をDBに書き込み、それを見たいと考えています。
イメージ

上のようなシステムを構築するためにpythonで「データベースを作って、インサートしてheroku上のサーバに保存」するプログラムを書き、ローカルで上手く動いているのを確認して、Heroku上にアップロードしました。しかしURLにアクセスするとApplication eroor となりました。

参考サイト
参考

発生している問題・エラーメッセージ

2019-03-15T02:06:33.228004+00:00 app[web.1]: [2019-03-15 02:06:33 +0000] [11] [INFO] Booting worker with pid: 11 2019-03-15T02:06:33.825657+00:00 heroku[web.1]: State changed from starting to up 2019-03-15T02:06:55.075985+00:00 heroku[web.1]: State changed from up to crashed 2019-03-15T02:06:54.875006+00:00 heroku[web.1]: Process running mem=1256M(245.3%) 2019-03-15T02:06:54.875141+00:00 heroku[web.1]: Error R15 (Memory quota vastly exceeded) 2019-03-15T02:06:54.875232+00:00 heroku[web.1]: Stopping process with SIGKILL 2019-03-15T02:06:55.005964+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=miyarecruit.herokuapp.com request_id=b6c49dbe-f088-4887-b89e-bb53bc8cc123 fwd="133.95.168.128" dyno=web.1 connect=0ms service=19292ms status=503 bytes=0 protocol=https 2019-03-15T02:06:55.062834+00:00 heroku[web.1]: Process exited with status 137 2019-03-15T02:07:14.143641+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=miyarecruit.herokuapp.com request_id=0d9750df-a411-4769-9488-10c3d3e9c617 fwd="133.95.168.128" dyno= connect= service= status=503 bytes= protocol=https

該当のソースコード

変更点 モジュールに文章と文字数をいれて、帰ってきた結果と時間と元の文章をDBに追加する処理を加えています。

python

1@app.route('/predict/',methods=['GET','POST']) 2def predict(): 3 4 sum_sentence,sum_num = summarize.dosum(num,sentence) 5 6 7 #DBに追加して、書き込み 8 #データベース接続のため 9 connection = psycopg2.connect("host=ec2-23-23-195-205.compamazonaws.com port=5432 dbname=demjsgs9 user=bei password=9eb69de7620b3fbf0fbdf3b5c097396") 10 cursor = connection.cursor() 11 cursor.execute("select version()") 12 13 #時間確保のため 14 15 import datetime 16 dt_now = datetime.datetime.now() 17 #print(dt_now) 18 dt_now = str(dt_now) 19 #print(dt_now) 20 21 cursor.execute("INSERT INTO test2 (time, input, output) VALUES (%s, %s, %s)", (dt_now, sentence, sum_sentence)) 22 cursor.execute("SELECT * FROM test2;") 23 cursor.fetchone() 24 connection.commit() 25 cursor.close 26 connection.close() 27 28 29 return json.dumps({ 30 "参照サイト数":sum_sentence, 31 "要約文字数":str(sum_num), 32 33 }

試したこと

DBの処理を追加する前はログが下のようになっていました。
イメージ説明

しかしいまは![イイメージ説明となっています。
ログで変わったところというとメモリ量2倍ぐらい変わっているのですが、なぜそうかわってしまってるのかがわかりません。
(色々試しているのですが、DB処理を加える前のプログラムをherokuに送ってもApplication error となってしまうので、今はロールバックで上手くいった時のを残しています。)

プログラムは下のようにしています。

git add . git commit -m"" git heroku push master

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

yoorwm

2019/03/15 02:42

とりあえず、メモリの使い過ぎで止められているようなメッセージが出ている気がするから、データ(短い文字列とか)を登録するだけ、な部分を作って試してみてはどうでしょうか?
meJ15

2019/03/15 02:50

今のURL(機械学習で文章を要約するプログラムでは)ではメモリを125%使っても動いていることを確認はできていますが、もう一回、同じものをgit heroku push masterするとメモリ使い過ぎというエラーが出るようになっています。herokuで「できるだけメモリ使わないように抑えて」というような設定があるのですかね?今のプログラムをどうアップロードしたのか忘れてしまったのが、問題なのですが。
meJ15

2019/03/15 03:38

すみません。無料プランです...
meJ15

2019/03/15 04:38

heroku config:set WEB_CONCURRENCY=1とするとメモリ量が抑えられました。 DB処理を付け足していないのは動くようになることがわかりました。 しかしDB処理を追加したものが、 2019-03-15T04:37:28.060007+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=miyarecruit.herokuapp.com request_id=456e1cbe-085d-42cb-9dea-2855632f95e4 fwd="133.95.168.128" dyno=web.1 connect=39ms service=30000ms status=503 bytes=0 protocol=https 2019-03-15T04:37:39.214685+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=miyarecruit.herokuapp.com request_id=b11304fc-050a-48e9-bc58-5fd5a69e57c3 fwd="133.95.168.128" dyno=web.1 connect=2ms service=30000ms status=503 bytes=0 protocol=https 2019-03-15T04:37:45.892640+00:00 heroku[web.1]: Process running mem=828M(161.9%) 2019-03-15T04:37:45.892805+00:00 heroku[web.1]: Error R14 (Memory quota exceeded) というエラーが出るようになってしましました。
ryu22e

2019/03/15 06:29

念のため確認したいのですが、質問文「該当のソースコード」の「connection = psycopg2.connect」に書かれているDBへの接続情報は、もしかして実際に接続できる情報ではありませんか? もしそうなら、質問文のコードは伏せ字にして、今使っているuser、passwordは変更しておいたほうがいいです。
meJ15

2019/03/15 06:59

ネットリテラシーが低すぎました。ありがとうございます。 よくわからないのですが、使えるようになりました。
ryu22e

2019/03/15 07:12

「よくわからないのですが、使えるようになりました」というのは、私のコメントへの返信ですか? それとも別の話? 私のコメントへの返信なら、ちょっと意味が分からないのですが……
meJ15

2019/03/15 07:19

すみません。あなたのコメントの返信ではなくウェブページの話です。。 ユーザ名とパスワードを載せてしまっていることに気付かず、あなたのコメントで気付きました。ありがとうございます。(ネットリテラシーが低すぎました。ありがとうございます。) 話変わりまして自分の要約アプリなのですが、昼寝して起きて動かしてみると、ウェブページが動くようになっていました(よくわからないのですが、使えるようになりました) ということが言いたかったです。迷惑をおかけしました。
guest

回答1

0

自己解決

heroku run rake db:migrate
heroku restart をすることでうまく動くようになりました

投稿2019/03/21 02:27

meJ15

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問