我想要做的是修補現有的使用urllib2在應用程序引擎上運行的python模塊,但我不想破壞它,因此可以在其他地方使用它。所以我正在尋找一個快速解決方案來測試模塊是否導入到應用程序引擎環境中。在urllib2上捕獲ImportError可能不是最好的解決方案。檢測應用程序引擎環境中是否導入了模塊
4
A
回答
11
你可以簡單地使用sys.modules來測試一個模塊已經進口的(我使用unicodedata爲例):
>>> import sys
>>> 'unicodedata' in sys.modules
False
>>> import unicodedata
>>> 'unicodedata' in sys.modules
True
0
你可以做對關鍵環境變量進行簡單的檢查。儘管如此,並沒有確切地說明這可能有多可靠。
import os, logging
try:
os.environ['APPENGINE_RUNTIME']
except KeyError:
logging.warn('We are not in App Engine environment')
else:
logging.info('We are in the App Engine environment')
您也可以define your own custom environment variable in your App Engine configuration file,這將任何模塊內觀看來自os.environ
。所以,在你的app.yaml文件中輸入如下內容:
env_variables:
MY_APP_ENGINE_ENVIRONMENT: '982844ed9cbd6ce42318d2804386be29cbc7c35a'
...會給你一個明確的ID來引用。
從開發服務器,這裏的環境變量,我得到:
{'USER_EMAIL': '',
'DATACENTER': 'us1',
'wsgi.version': (1, 0),
'REQUEST_ID_HASH': 'E2C19D51',
'SERVER_NAME': 'mydesktop',
'QUERY_STRING': '',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'APPENGINE_RUNTIME': 'python27',
'wsgi.input': <cStringIO.StringI object at 0x2f145d0>,
'SERVER_PROTOCOL': 'HTTP/1.1',
'HTTPS': 'off',
'USER_IS_ADMIN': '0',
'TZ': 'UTC',
'REMOTE_ADDR': '192.168.0.2',
'HTTP_X_APPENGINE_COUNTRY': 'ZZ',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36',
'SERVER_SOFTWARE': 'Development/2.0',
'HTTP_CACHE_CONTROL': 'max-age=0',
'DEFAULT_VERSION_HOSTNAME': 'mydesktop:8080',
'SERVER_PORT': '8080',
'wsgi.run_once': False,
'REQUEST_METHOD': 'GET',
'USER_ID': '',
'AUTH_DOMAIN': 'gmail.com',
'USER_NICKNAME': '',
'USER_ORGANIZATION': '',
'wsgi.multiprocess': True,
'INSTANCE_ID': '8a8e02e6efa8d195346ae0c90cfeafce8aa2',
'PATH_INFO': '/',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_HOST': 'mydesktop:8080',
'wsgi.errors': <google.appengine.api.logservice.logservice.LogsBuffer object at 0x2f09c30>,
'APPLICATION_ID': 'dev~myapp',
'wsgi.multithread': True,
'CURRENT_VERSION_ID': 'version-1',
'SCRIPT_NAME': '',
'REQUEST_LOG_ID': '4eafbc91ca4ebd5fee53f19eeab2eb26d243d9ddc92b6b9bc0a063eabdc84cfff',
'wsgi.url_scheme': 'http'}
希望有所幫助。
相關問題
- 1. 谷歌應用程序引擎是否支持環境變量?
- 2. 導入跨模塊在谷歌應用程序引擎
- 3. 瞭解應用程序是否正在測試環境中運行
- 4. 使用應用程序引擎的django-nonrel模塊導入錯誤sdk
- 5. 在Adobe Air應用程序中是否有JavaScript模板引擎?
- 6. 檢查AngularJS模塊是否被引導
- 7. 檢測是否在Facebook環境中
- 8. 谷歌應用程序引擎的Python導入錯誤模塊未找到
- 9. App引擎模塊導入問題
- 10. 檢測是否WiX託管引導程序應用程序需要仰角
- 11. 谷歌應用程序引擎和PHP運行時環境
- 12. Google應用程序引擎bulkloader環境變量
- 13. 應用程序引擎的靈活環境如何工作?
- 14. 檢查我的模塊是否導入
- 15. 春:導入模塊指定的環境
- 16. 如何在Safari中檢測是否安裝了應用程序
- 17. 檢測環境是否是全球環境
- 18. 在開發環境中模擬Google應用引擎維護期
- 19. 在谷歌應用程序引擎,如何檢查模型是否爲空?
- 20. ImportError:應用程序引擎中沒有名爲pwd的模塊
- 21. 向PHP中的應用程序引擎模塊發送信號
- 22. 在特定環境中部署Spring引導應用程序
- 23. 在VM環境中運行應用程序時檢測
- 24. 如何檢測express.js應用程序中的環境?
- 25. 檢測網站中的Android混合應用程序環境
- 26. 是否Python的檢測導入的模塊的更新
- 27. 檢測環境是否爲量角器
- 28. SQL * PLUS是否嵌入了PLSQL引擎?
- 29. 檢測.NET應用程序是在Azure還是在非Azure環境中運行
- 30. RoboGuice單元測試注入應用程序模塊而不是測試模塊