摘要:上面這段代碼,我在本地機(jī)器服務(wù)器其它的應(yīng)用引擎上測(cè)試都是正常的,版本是和。因此,有很大的可能是環(huán)境的問題。這個(gè)問題已經(jīng)在工單系統(tǒng)提交了,期待會(huì)有好結(jié)果吧在某些應(yīng)用場(chǎng)景下,使用了某些第三方的庫比如,有可能的鍵名是類型的,那就必須進(jìn)行轉(zhuǎn)換。
SAE Python urllib2引發(fā)異常問題的關(guān)鍵點(diǎn):HTTP(S)請(qǐng)求包含headers,且headers的鍵名為unicode
下面是引發(fā)異常的代碼:
pythonimport urllib2 headers = {u"Authorization": u"Bearer 83F40E96FB6882686F4DF1E17105D04E"} req = urllib2.Request("https://github.com", headers=headers) urllib2.urlopen(req).read()
代碼執(zhí)行時(shí)會(huì)得到類似如下的報(bào)錯(cuò)信息(錯(cuò)誤是在請(qǐng)求發(fā)起前引發(fā)的):
textHTTPError: HTTP Error 400: Bad request
下面就上面的請(qǐng)求做假設(shè)分析:
若請(qǐng)求不包含headers,則請(qǐng)求正常;
若請(qǐng)求包含headers,且headers字典鍵名不為unicode類型,則請(qǐng)求正常;
若請(qǐng)求包含headers,且headers字典鍵名為unicode類型,則請(qǐng)求前必然會(huì)引發(fā)HTTP Error 400: Bad request錯(cuò)誤。
上面這段代碼,我在本地機(jī)器、VPS服務(wù)器、其它的應(yīng)用引擎上測(cè)試都是正常的,Python版本是2.6和2.7。因此,有很大的可能是SAE Pyhton環(huán)境的問題。這個(gè)問題已經(jīng)在SAE工單系統(tǒng)提交了,期待會(huì)有好結(jié)果吧~
在某些應(yīng)用場(chǎng)景下,使用了某些第三方的庫(比如Flask-OAuthlib),有可能headers的鍵名是unicode類型的,那就必須進(jìn)行轉(zhuǎn)換。下面是在stackoverflow上找到的一個(gè)轉(zhuǎn)換函數(shù):
pythondef convert_keys_to_string(dictionary): """Recursively converts dictionary keys to strings.""" if not isinstance(dictionary, dict): return dictionary return dict((str(k), convert_keys_to_string(v)) for k, v in dictionary.items())
參考資料:
http://stackoverflow.com/questions/1254454/fastest-way-to-convert-a-dicts-keys-values-from-unicode-to-str
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45347.html
摘要:內(nèi)存池機(jī)制提供了對(duì)內(nèi)存的垃圾收集機(jī)制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。為了加速的執(zhí)行效率,引入了一個(gè)內(nèi)存池機(jī)制,用于管理對(duì)小塊內(nèi)存的申請(qǐng)和釋放。 注:答案一般在網(wǎng)上都能夠找到。1.對(duì)if __name__ == main的理解陳述2.python是如何進(jìn)行內(nèi)存管理的?3.請(qǐng)寫出一段Python代碼實(shí)現(xiàn)刪除一個(gè)list里面的重復(fù)元素4.Python里面如何拷貝一個(gè)對(duì)象?...
摘要:關(guān)聯(lián)值通常會(huì)作為參數(shù)被傳遞給異常類的構(gòu)造器。所有內(nèi)置異常的基類。此異常僅用于非限定名稱。由內(nèi)置函數(shù)和的方法所引發(fā),用來表示該迭代器不能產(chǎn)生下一項(xiàng)。當(dāng)一個(gè)或函數(shù)返回時(shí),將引發(fā)一個(gè)新的實(shí)例,函數(shù)返回的值將被用作異常構(gòu)造器的形參。 上一篇文章:Python標(biāo)準(zhǔn)庫---16、內(nèi)置類型:上下文管理器類型、其他、特殊屬性下一篇文章:Python標(biāo)準(zhǔn)庫---18、文本處理服務(wù):string 常見的字...
摘要:基于發(fā)送請(qǐng)求發(fā)送請(qǐng)求發(fā)送請(qǐng)求其他請(qǐng)求接口與請(qǐng)求類型一致,如等。如果請(qǐng)求返回或狀態(tài)碼,調(diào)用會(huì)拋出此異常。請(qǐng)求超過配置的最大重定向數(shù)。 基于2.21.0 發(fā)送請(qǐng)求 發(fā)送GET請(qǐng)求: r = requests.get(https://api.github.com/events) 發(fā)送POST請(qǐng)求: r = requests.post(https://httpbin.org/post, dat...
摘要:定制篩選器,對(duì)內(nèi)容進(jìn)行篩選重點(diǎn)。審查元素這是瀏覽器自帶的工具,提供抓包和檢查網(wǎng)頁源碼的功能,供使用者分析網(wǎng)頁。超時(shí)設(shè)置,如果服務(wù)器在指定秒數(shù)內(nèi)沒有應(yīng)答,拋出異常,用于避免無響應(yīng)連接,整形或浮點(diǎn)數(shù)。返回連接狀態(tài),正常。 前言 python 3.6 ??! 本爬蟲系列是面對(duì)有Python語法基礎(chǔ)的讀者寫的,如果你沒學(xué)過python,emmmm.....也沒關(guān)系,你或許能從每篇文章中學(xué)到一些...
摘要:刪除字典元素和字典刪除鍵為的條目刪除中所有的條目刪除整個(gè)字典刪除并返回鍵為的條目二字典相關(guān)函數(shù)工廠方法工廠函數(shù)被用來創(chuàng)建字典。與函數(shù)方法相似,如果字典中鍵存在,刪除并返回,如果鍵不存在,且沒有給出的值,引發(fā)異常。 Python字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象,如字符串、數(shù)字、元組等其他容器模型。一、創(chuàng)建字典(一)字典的增刪改查(1)字典的創(chuàng)建key:(不可變類型)數(shù)字、字...
閱讀 25706·2021-09-29 09:41
閱讀 4851·2021-09-10 11:20
閱讀 1958·2021-09-09 09:32
閱讀 1912·2019-08-30 15:44
閱讀 3224·2019-08-29 17:13
閱讀 2835·2019-08-29 14:14
閱讀 2091·2019-08-29 14:11
閱讀 3252·2019-08-29 12:36