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