簡體   English   中英

使用python-requests的順序請求

[英]Sequential requests using python-requests

現在我正在使用Flask,在嘗試使用python請求模塊執行多個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

為我工作。 您可能需要檢查第二步和第三步

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

您可能需要確保從req對象中讀取了所有值。 我認為您可能需要req.text和req.status_code或req.content

在此處檢查頁面的中途位置: http ://docs.python-requests.org/en/latest/api/#request-sessions,其中他們討論了會話參數“類request.adapters.HTTPAdapter(pool_connections = 10,pool_maxsize = 10,max_retries = 0,pool_block = False)“

我完全不確定如何使用連接池等,但是文檔確實會說( http://docs.python-requests.org/en/latest/user/advanced/ )(請保持活動狀態)

“請注意,只有在讀取了所有正文數據后,連接才會釋放回池以供重用;請確保將流設置為False或讀取Response對象的content屬性。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM