2017-11-03 14 views
2

私は、HTTP経由でjson形式でデータをダウンロードするPythonスクリプトを持っています。要求モジュールを使用してコマンドラインでスクリプトを実行すると、HTTP接続は成功し、データは問題なくダウンロードされます。しかし、私がcrontabジョブとしてスクリプトを起動しようとすると、しばらくするとHTTP接続によってタイムアウトが発生します。誰でもここで何が起こっているのか教えてもらえますか?私は現在、bashスクリプトを介してデータをダウンロードしてから、そのbash内からPythonスクリプトを実行しています。しかし、これはナンセンスです!どうもありがとうございます!スクリプトがcrontabで起動されたときにPythonリクエストがハングする

使用方法:3.6.1 | Anaconda custom(64-bit)| (デフォルト、May 11 2017、13:09:58)\ n [GCC 4.4.7 20120313(Red Hat 4.4.7-1)]

P .:この問題に関する投稿は見つかりませんでした。これについての回答が既に他の投稿にある場合は、謝罪を受け入れてください。

これは私のコードからの抜粋です。 requests.get(url)を実行するとタイムアウトします。

try: 
    response = requests.get(url) 
    messages = response.json()["Messages"] 
except requests.exceptions.Timeout: 
    logging.critical("TIMEOUT received when connecting to HTTP server.") 
except requests.exceptions.ConnectionError: 
    logging.critical("CONNECTION ERROR received when connecting to HTTP server.") 
+0

URLやURLの作成方法を指定できますか?両方のケースでログに記録し、それが確実に並んでいることを確認してください。私がチェックする最初のことは、あなたが思うものであるかどうかです。環境変数から。 – lyngvi

+0

あなたの答えをありがとう!私は実際のURLを指定することはできません。私はそれを確認する必要があります。とにかく、私が言うことの1つは、スクリプトが完全にコマンドラインで動作するのに対し、crontabで起動するとハングアップするということです。私は、URLが正しく構築されていること(結果を出力し、その文字列をPythonインタプリタに貼り付けてテストすること)を得たことはかなり肯定的です。とにかく、ちょうど私に考えを与えました:他のURLでテストしてください。 –

+0

それがどのように構築されているかを尋ねるより多くの理由。例として、Cronが実行される環境は通常、あなたが通常実行する環境とは一致しません(例えば '.bashrc' /' .bash_profile'の変数は一般に利用できません)。 – lyngvi

答えて

0

私の質問に対する答えが見つかりました。私が使用しているプロキシを定義し、その後、私のコードでは、このようにそれを使用しました:

HTTP_PROXY="http://your_proxy:proxy_port" 
PROXY_DICT={"http":HTTP_PROXY} 

response = requests.get(url, proxies=PROXY_DICT) 

参考:

Proxies with Python 'Requests' module

ご理解ありがとうございました。私は投稿する前に徹底的な検索をしておくべきだったと思う。ごめんなさい。

関連する問題