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

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

ただいまの
回答率

87.90%

[LINE BOT]apache+flask上でrequests.postでエラーが起こる

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 965

score 10

 前提・実現したいこと

apache上で起動させているFlaskで受信したメッセージをそのまま返すLinebotを作成しておりますが、
メッセージを受け取った際にエラーを出力してしまいます。
let'sEncriptでSSL環境化しております。

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

[Tue Oct 16 16:19:36.979074 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430] [2018-10-16 16:19:36,976] ERROR in app: Exception on /callback [POST]
[Tue Oct 16 16:19:36.979111 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430] Traceback (most recent call last):
[Tue Oct 16 16:19:36.979114 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib64/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
[Tue Oct 16 16:19:36.979116 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     response = self.full_dispatch_request()
[Tue Oct 16 16:19:36.979118 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
[Tue Oct 16 16:19:36.979121 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     rv = self.handle_user_exception(e)
[Tue Oct 16 16:19:36.979122 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
[Tue Oct 16 16:19:36.979124 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     reraise(exc_type, exc_value, tb)
[Tue Oct 16 16:19:36.979126 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib64/python3.6/site-packages/flask/_compat.py", line 35, in reraise
[Tue Oct 16 16:19:36.979128 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     raise value
[Tue Oct 16 16:19:36.979130 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
[Tue Oct 16 16:19:36.979132 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     rv = self.dispatch_request()
[Tue Oct 16 16:19:36.979134 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
[Tue Oct 16 16:19:36.979136 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     return self.view_functions[rule.endpoint](**req.view_args)
[Tue Oct 16 16:19:36.979138 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/var/www/flask/myapp.py", line 36, in callback
[Tue Oct 16 16:19:36.979146 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     requests.post(LINE_ENDPOINT, headers=header, data=json.dumps(payload))
[Tue Oct 16 16:19:36.979148 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/requests/api.py", line 112, in post
[Tue Oct 16 16:19:36.979150 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     return request('post', url, data=data, json=json, **kwargs)
[Tue Oct 16 16:19:36.979152 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/requests/api.py", line 58, in request
[Tue Oct 16 16:19:36.979154 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     return session.request(method=method, url=url, **kwargs)
[Tue Oct 16 16:19:36.979163 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 512, in request
[Tue Oct 16 16:19:36.979165 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     resp = self.send(prep, **send_kwargs)
[Tue Oct 16 16:19:36.979167 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 622, in send
[Tue Oct 16 16:19:36.979169 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     r = adapter.send(request, **kwargs)
[Tue Oct 16 16:19:36.979171 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 445, in send
[Tue Oct 16 16:19:36.979172 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     timeout=timeout
[Tue Oct 16 16:19:36.979174 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
[Tue Oct 16 16:19:36.979176 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     chunked=chunked)
[Tue Oct 16 16:19:36.979178 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
[Tue Oct 16 16:19:36.979180 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     self._validate_conn(conn)
[Tue Oct 16 16:19:36.979182 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 849, in _validate_conn
[Tue Oct 16 16:19:36.979184 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     conn.connect()
[Tue Oct 16 16:19:36.979186 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 344, in connect
[Tue Oct 16 16:19:36.979188 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     cert_reqs=resolve_cert_reqs(self.cert_reqs),
[Tue Oct 16 16:19:36.979189 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 297, in create_urllib3_context
[Tue Oct 16 16:19:36.979191 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     context.verify_mode = cert_reqs
[Tue Oct 16 16:19:36.979193 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py", line 403, in verify_mode
[Tue Oct 16 16:19:36.979195 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     _verify_callback
[Tue Oct 16 16:19:36.979197 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/OpenSSL/SSL.py", line 1108, in set_verify
[Tue Oct 16 16:19:36.979199 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     self._verify_helper = _VerifyHelper(callback)
[Tue Oct 16 16:19:36.979201 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]   File "/usr/lib/python3.6/site-packages/OpenSSL/SSL.py", line 333, in __init__
[Tue Oct 16 16:19:36.979203 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430]     "int (*)(int, X509_STORE_CTX *)", wrapper)
[Tue Oct 16 16:19:36.979208 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430] SystemError: <built-in method callback of CompiledFFI object at 0x7f7ecc38b130> returned NULL without setting an error
[Tue Oct 16 16:19:36.979227 2018] [wsgi:error] [pid 1713] [client 203.104.146.156:41430] 

 該当のソースコード

# coding: utf-8↲
from flask import Flask↲
from flask import request↲
import requests↲
import json↲
↲
CHANNEL_ACCESS_TOKEN='取得したアクセストークン'↲
↲
LINE_ENDPOINT = 'https://api.line.me/v2/bot/message/reply'↲
↲
app = Flask(__name__)↲
↲
@app.route("/callback", methods=['POST'])↲
def callback():for event in request.json['events']:↲
        messages = [↲
            {↲
                'type': 'text',↲
                'text': event['message']['text'],↲
            }↲
        ]↲
        print (messages,event['replyToken'])↲
↲
        header = {↲
            "Content-Type": "application/json",↲
            "Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN↲
        }↲
        payload = {↲
            "replyToken": event['replyToken'],↲
            "messages": messages,↲
        }↲

        print(LINE_ENDPOINT)↲
        requests.post(LINE_ENDPOINT, headers=header, data=json.dumps(payload))↲
    return '{}', 200if __name__ == "__main__":

 試したこと

requests.postで落ちているように見えたので、requests.postをコメントアウトしたところwebhook urlの接続確認をすることはできました。
またwebhookを使用せずにプッシュメッセージを送信するスクリプトを実行したところこちらは正常に送信できました。

 環境

[Apache]
Server version: Apache/2.4.6 (CentOS)
Server built:   Jun 27 2018 13:48:59
[OS]
CentOS Linux release 7.5.1804 (Core)

よろしくおねがいします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

  • ただいまの回答率 87.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る