0

現在、Flask を使用していますが、python requests モジュールを使用して複数の GET リクエストを実行しようとすると問題が発生します。

一連のリクエストを送信しようとすると、最初のリクエストは正常に完了しますが、他のリクエストはタイムアウト例外をスローします。

ビューのコードの一部を次に示します。

import requests

sess = requests.Session()
site_url = 'http://www.example.com/api/'
steps = ['first_step', 'second_step', 'third_step']
step_responses = dict()
for s in steps:
    try:
        req = sess.get(site_url + s, timeout=5))
    except requests.exceptions.Timeout:
        return jsonify({'result':False, 'error':'timeout'})
    except requests.exceptions.ConnectionError:
        return jsonify({'result':False, 'error':'connection_error'})
else:
        step_responses[s] = True

この部分をスタンドアロンの .py ファイルに抽出すると、正常に完了します。

import requests

sess = requests.Session()
site_url = 'http://www.example.com/api/'
steps = ['first_step', 'second_step', 'third_step']
step_responses = dict()
for s in steps:
    try:
        req = sess.get(site_url + s, timeout=5)
    except requests.exceptions.Timeout:
        step_responses[s] = 'timeout'
    except requests.exceptions.ConnectionError:
        step_responses[s] = 'conn_error'
    else:
        step_responses[s] = 'ok'
print step_responses
4

2 に答える 2

0

私のために働きます。2番目と3番目のステップを確認することをお勧めします

import requests

sess = requests.Session()
def module():
site_url = 'http://stackoverflow.com/'
steps = ['users', 'questions', 'tags']
step_responses = dict()
for s in steps:
    try:
        req = sess.get(site_url + s, timeout=5)
    except requests.exceptions.Timeout:
        return jsonify({'result':False, 'error':'timeout'})
    except requests.exceptions.ConnectionError:
        return jsonify({'result':False, 'error':'connection_error'})
else:
        step_responses[s] = True
于 2015-07-22T13:52:21.153 に答える