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

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

新規登録して質問してみよう
ただいま回答率
85.48%
さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

Python 3.x

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

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

995閲覧

レンタルサーバーからtwitterにアクセスすると接続を切られる原因

mit39

総合スコア13

さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

Python 3.x

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

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/02/24 08:01

レンタルサーバー上でpythonを実行し、twitterの情報をjsonで取得するためのコードを作成しています。
PC上(Windows10)からアクセスする際は問題なくデータ取得できるのですが、
レンタルサーバー上で実行すると、接続が切られてしまい、困っております。

レンタルサーバー上での発現より、SSL関係もしくは、twitter APIを利用する上での処理があるのか
と思っているのですが、通信関係は知識が乏しく、何を確認してどのような処理をすればいいかもわからなかったため、こちらに投稿させていただきました。

有識者の方、ご助言いただけますと幸いです。
よろしくお願いいたします。


言語:python3.4
サーバー:さくらレンタルサーバー(スタンダード)

#該当コード:
import json
from requests_oauthlib import OAuth1Session

twitter=OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

url = 'https://api.twitter.com/1.1/search/tweets.json'
keyword = 'Items'
params = {'q' : keyword, 'count' : 40}

req = twitter.get(url, params = params) 

#以下、エラーメッセージ:
Traceback (most recent call last):
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connectionpool.py", line 672, in urlopen
chunked=chunked,
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connectionpool.py", line 376, in _make_request
self._validate_conn(conn)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connectionpool.py", line 994, in validate_conn
conn.connect()
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connection.py", line 394, in connect
ssl_context=context,
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/util/ssl
.py", line 370, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/home/test_Dir/local/python/lib/python3.4/ssl.py", line 365, in wrap_socket
_context=self)
File "/home/test_Dir/local/python/lib/python3.4/ssl.py", line 583, in init
self.do_handshake()
File "/home/test_Dir/local/python/lib/python3.4/ssl.py", line 810, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [Errno 54] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/requests/adapters.py", line 449, in send
timeout=timeout
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connectionpool.py", line 720, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/packages/six.py", line 734, in reraise
raise value.with_traceback(tb)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connectionpool.py", line 672, in urlopen
chunked=chunked,
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connectionpool.py", line 376, in _make_request
self._validate_conn(conn)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connectionpool.py", line 994, in validate_conn
conn.connect()
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/connection.py", line 394, in connect
ssl_context=context,
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/urllib3/util/ssl
.py", line 370, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/home/test_Dir/local/python/lib/python3.4/ssl.py", line 365, in wrap_socket
_context=self)
File "/home/test_Dir/local/python/lib/python3.4/ssl.py", line 583, in init
self.do_handshake()
File "/home/test_Dir/local/python/lib/python3.4/ssl.py", line 810, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "tweet_read_test_2.py", line 49, in <module>
req = twitter.get(url, params = params)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/home/test_Dir/www/wp/wp-content/uploads/python_code/../py_vendor/requests/adapters.py", line 498, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))

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

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

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

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

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

hoshi-takanori

2020/02/24 10:04

Python 3.4 というのはちょっと古い気がします。もしかしたら TLS のバージョンが古くて弾かれてるのかも。
mit39

2020/02/25 12:09

早速ご回答いただきましてありがとうございます。 ご推察の通り、TLSのバージョンは古いようでした。 確認結果: % python3 CheckTLS.py  ← ssl.OPENSSL_VERSIONを出力するだけ OpenSSL 0.9.8zh-freebsd 3 Dec 2015 % openssl version    ← レンタルサーバー上で実施結果 OpenSSL 1.0.2o-freebsd 27 Mar 2018 この場合、pythonのver.を上げるしか方法がないのでしょうか? (あるいはそれが推奨なのでしょうか?) いろいろ試行錯誤しながら構築したサイトなので、可能な限りverを変えず進めたく。。
hoshi-takanori

2020/02/25 13:15

Twitter API は TLS v1.2 必須ですが、OpenSSL に TLS v1.2 が入ったのは 1.0.1 のようです。 Python 3.4 も OpenSSL 0.9.8 も 1.0.2 もすでにサポート期限が切れてますので、上げた方がいいと思います。
mit39

2020/02/26 00:05

ご返答ありがとうございます! pythonのverアップ検討してみます。結果はまたこちらで共有させていただきますね。
mit39

2020/05/20 08:09

パソコンがクラッシュしたため、結果共有が遅れ申し訳ありませんでした。 バージョンを3.8.1へ上げた結果、無事解決しました。 ご返答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問