requests套件在GAE專案開發中遇到的無法正常存取ssl套件的問題

我是用的GAE SDK版本為1.7.0,python 2.7。requests在0.13.4版的時候已支持使用在GAE上。但使用development server啟動專案進行本地端測試時,如果抓取https的資源,會發出ssl的AttributeError例外,如果利用dir將ssl列印出來,會發現只是一個空的module,development server啟動時將特定套件過濾掉了。

GAE SDK處理development server啟動時允許使用的套件的程式是在google/appengine/tools/dev_appserver_import_hook.py ,修改這個檔案如下,就可解決問題了。

--- a/dev_appserver_import_hook.py
+++ b/dev_appserver_import_hook.py
@@ -35,6 +35,7 @@ import select
 import socket
 import sys
 import urllib
+import ssl as _new_ssl
 
 try:
   import distutils.util
@@ -1114,8 +1115,8 @@ class HardenedModulesHook(object):
 
       ],
 
-      'ssl': [
-      ],
+      #'ssl': [
+      #],
   }
 
 
@@ -1711,7 +1712,8 @@ class HardenedModulesHook(object):
     elif submodule_fullname == 'select':
       module.__dict__.update(self._select.__dict__)
     elif submodule_fullname == 'ssl':
-      pass
+      module.__dict__.update(_new_ssl.__dict__)
+      #pass
     elif self.StubModuleExists(submodule_fullname):
       module = self.ImportStubModule(submodule_fullname)
     else:
patch file download

留言

熱門文章