使用python处理请求的适当方法,尤其是在超时中

时间:2016-01-13 15:57:04

标签: python python-requests

我正在使用python请求来自动执行各种API测试。我在几个场合注意到的是,当我“提升”我的脚本并尝试执行大量测试时,我的应用程序卡住了,我不知道在哪里检查发生了什么。

在下面的代码中,我有3种方法。 testSingleNewLicense()只是一种调用单一许可证的方法,并被提取出来在这里发布一个问题(因为我不能与你共享我的所有代码和许可证)

testURL()实际上正在执行请求,我试图实现try / except部分,因为我以为我会在这里得到一些东西(不确定该部分是否真的有效)

字符串ResponseToJson()再次,只是化妆品打印出正确的结果。

当我在代码的主要部分放入while / except时,我希望我的代码运行一段时间(浸泡测试),但它随机停止。它在“testURL()”中打印(url)后停止。

有时经过4次运行,有时候是21,7,9,32 ......(主要是打印(i))

我错过了什么?当它“无所事事”时,我怎么能看到python脚本正在做什么?

我正在使用PyCharm / Python 3

try:
    i=0
    while True:
        testSingleNewLicense()
        print (i)
        i+=1
except KeyboardInterrupt:
    exit

def testSingleNewLicense():     
    sortedJsonTest = stringResponseToJson(urlLive3)
    print ("FutureLive: " + sortedJsonTest)

def testUrl(url, headers="", username="", password=""):
    print ("Tested Url:")
    print (url)
    try:
        print("pre")
        #response = requests.get("http://www.stojakovic.net", timeout=0.004)
        response = requests.get(url,headers=headers, timeout=0.85)
        print("post")
    except requests.exceptions.RequestException as e:
        print ("Me :" + str(e))
    except requests.exceptions.ConnectTimeout as e:
        print ("Too slow!")

print(response.request.headers)
print ("resp:" + str(response.status_code))
print (response.headers)
if (response.status_code != 200):
    print ("Not authorized", + response.status_code)
    return response.status_code, response.text
else:
    return response.status_code, response.text
pass

def stringResponseToJson(url, headers=""):
    code,content = testUrl(url, headers)
    if (code!=200):return content
    jsonT = json.loads(content)
    return json.dumps(jsonT,sort_keys=True)

0 个答案:

没有答案