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

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

新規登録して質問してみよう
ただいま回答率
85.37%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

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回答

2686閲覧

heroku application error

yuudai

総合スコア65

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

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/05/12 16:32

編集2019/05/12 17:30

前提・実現したいこと

結論から言うとheroku application errorを突破したいです。

python,heroku,flask,line-apiを使ってLINE BOTを作ろうとしています。しかしgit push heroku masterをした後にheroku openを実行してみるとweb側でapplication errorになります。そこではheroku logs -tail でログを見てねと言っているのでログを見てみると

at=error code=H10 desc="App crashed" method=GET path="/" host=perfect-order-bot.herokuapp.com request_id=2cfb3810-89e3-4d9e-9b8b-02444546b557 fwd="180.4.145.1" dyno= connect= service= status=503 bytes= protocol=https

と表示されていたので、heroku H10 503で調べてみましたが、解決策は出てきませんでした。
Procfileが怪しいのかなと思っています。それかgunicornをrequirements.txtに追加しないといけないというのをちらっと見かけた気もします。あとローカルの環境では試していません。やり方がわからなかったので。ngrokを使うとできるらしいですけどよくわかりませんでした。
どなたか助けてください。よろしくお願いします。

Procfile

1web: gunicorn perfect-order-bot:main --log-file -

requirements

1Flask==1.0.2 2line-bot-sdk==1.8.0 3numpy==1.16.2 4oandapy==0.0.9 5oandapyV20==0.6.3 6pandas==0.24.2 7plotly==3.8.1 8requests==2.21.0 9schedule==0.6.0

runtime

1python-3.7.3

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

State changed from crashed to starting 2019-05-12T08:38:37.599155+00:00 heroku[web.1]: Starting process with command `gunicorn main:app --log-file -` 2019-05-12T08:38:39.793438+00:00 heroku[web.1]: State changed from starting to crashed 2019-05-12T08:38:39.773600+00:00 heroku[web.1]: Process exited with status 127 2019-05-12T08:38:39.697936+00:00 app[web.1]: bash: gunicorn: command not found Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 2019-05-12T05:14:16.786948+00:00 heroku[web.1]: Stopping process with SIGKILL 2019-05-12T05:14:16.890230+00:00 heroku[web.1]: State changed from starting to crashed 2019-05-12T05:14:16.897017+00:00 heroku[web.1]: State changed from crashed to starting 2019-05-12T05:14:16.876908+00:00 heroku[web.1]: Process exited with status 137 2019-05-12T05:14:22.033199+00:00 heroku[web.1]: Starting process with command `python main.py` 2019-05-12T05:15:22.724959+00:00 heroku[web.1]: State changed from starting to crashed 2019-05-12T05:15:22.642858+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 2019-05-12T05:15:22.642944+00:00 heroku[web.1]: Stopping process with SIGKILL 2019-05-12T05:15:22.710034+00:00 heroku[web.1]: Process exited with status 137

エラーの種類はこれだけです。

該当のソースコード

python

1from flask import Flask, request, abort 2 3from linebot import ( 4 LineBotApi, WebhookHandler 5) 6from linebot.exceptions import ( 7 InvalidSignatureError, LineBotApiError 8) 9from linebot.models import ( 10 FollowEvent, MessageEvent, TextMessage, TextSendMessage, ImageMessage, ImageSendMessage, TemplateSendMessage, ButtonsTemplate, PostbackTemplateAction, MessageTemplateAction, URITemplateAction 11) 12import os 13app = Flask(__name__) 14 15 16#環境変数からLINE Access Tokenを設定 17LINE_CHANNEL_ACCESS_TOKEN = os.environ["LINE_CHANNEL_ACCESS_TOKEN"] 18#環境変数からLINE Channel Secretを設定 19LINE_CHANNEL_SECRET = os.environ["LINE_CHANNEL_SECRET"] 20 21line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN) 22handler = WebhookHandler(LINE_CHANNEL_SECRET) 23 24 25@app.route("/callback", methods=['POST']) 26def callback(): 27 # get X-Line-Signature header value 28 signature = request.headers['X-Line-Signature'] 29 30 # get request body as text 31 body = request.get_data(as_text=True) 32 app.logger.info("Request body: " + body) 33 34 # handle webhook body 35 try: 36 handler.handle(body, signature) 37 except InvalidSignatureError: 38 abort(400) 39 40 return 'OK' 41 42 43 44# MessageEvent 45@handler.add(MessageEvent, message=TextMessage) 46def handle_message(event): 47 line_bot_api.reply_message( 48 event.reply_token, 49 TextSendMessage(text='暇人か!') 50 ) 51if __name__ == "__main__": 52 port = int(os.getenv("PORT", 5000)) 53 app.run(host="0.0.0.0", port=port)

試したこと

LINE Developers のWebhook URLのところの接続確認を押してみるとWebhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)というエラーメッセージが出ます。
LINEの方に試しにメッセージを送ってみると既読がつくだけです。
LINEのシークレットキーとアクセストークンはherokuに設定しています。

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

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

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

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

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

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

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

nico25

2019/05/12 17:23

エラーログが他にも記述されていなかったでしょうか? この1行以外にもなにかしら記述があれば、追記していただけると助かります。 ``` at=error code=H10 desc="App crashed" method=GET path="/" host=perfect-order-... ```
nico25

2019/05/12 17:25

例えば 1) Python が 実行途中で例外を投げたとか 2) requirements.txt にないライブラリを import しようとしている などが自分はよくぶち当たっていました。
yuudai

2019/05/12 17:31

jupyter notebookで実行してみると* Serving Flask app "__main__" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)と表示されるだけで何も起こりませんでした。
nico25

2019/05/12 17:34

なるほど 1) ローカルの jupyter noteboook では warning が発生しているだけで、 問題なく実行できているということでよろしいでしょうか? 2) また差し支えなければエラーが投げられた時の heroku logs -tail の全体像を見せていただけると嬉しいです。
nico25

2019/05/12 17:52

すいません、追記されていましたね。 上のコメントは無視してください。 とりあえず、下に回答しました。
guest

回答1

0

ベストアンサー

原因

追記ありがとうございます。
gunicorn が無いと言われています。

2019-05-12T08:38:39.697936+00:00 app[web.1]: bash: gunicorn: command not found

対策

pip freeze > requirements.txt を再実行して
gunicorn を追記されていることを確認して
再度、heroku で問題が発生するか確認して見てください。

requirements

1Flask==1.0.2 2line-bot-sdk==1.8.0 3numpy==1.16.2 4oandapy==0.0.9 5oandapyV20==0.6.3 6pandas==0.24.2 7plotly==3.8.1 8requests==2.21.0 9schedule==0.6.0 10gunicron==************** <---- これ

類似

おそらくこの辺りが類似の質問かと思われます。

投稿2019/05/12 17:44

編集2019/05/12 17:45
nico25

総合スコア830

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

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

yuudai

2019/05/13 07:41

requirementsにgunicornを追加することでh10 errorは解決することができました。ありがとうございました。
nico25

2019/05/13 12:40

恐れ入ります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問