我想要做的是修补现有的使用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. 使用应用程序引擎的django-nonrel模块导入错误sdk
- 3. 检查AngularJS模块是否被引导
- 4. 在Adobe Air应用程序中是否有JavaScript模板引擎?
- 5. 谷歌应用程序引擎的Python导入错误模块未找到
- 6. Google应用程序引擎bulkloader环境变量
- 7. 应用程序引擎的灵活环境如何工作?
- 8. 检查我的模块是否导入
- 9. 如何在Safari中检测是否安装了应用程序
- 10. 在开发环境中模拟Google应用引擎维护期
- 11. 在谷歌应用程序引擎,如何检查模型是否为空?
- 12. ImportError:应用程序引擎中没有名为pwd的模块
- 13. 在VM环境中运行应用程序时检测
- 14. 是否Python的检测导入的模块的更新
- 15. 检测环境是否为量角器
- 16. RoboGuice单元测试注入应用程序模块而不是测试模块
- 17. 在应用程序中导入模块,而不是包
- 18. 布尔检查是否安装了导轨引擎?
- 19. 瓶进口是在谷歌应用程序引擎的标准环境未能
- 20. 谷歌应用程序引擎:导入导出blobstore
- 21. 由于导入_multiprocessing导致的应用程序引擎错误
- 22. 嵌入式应用程序未检测到/已知C++模块
- 23. 检测应用程序是否安装?
- 24. 如何在应用程序引擎(python)中导入TemplateDoesNotExist?
- 25. 检测是否从Play商店安装了应用程序
- 26. 检测应用程序启动时是否保持了转换
- 27. 开发应用程序服务器不支持应用程序引擎灵活的环境中应用
- 28. 迁移到应用程序引擎模块,首先测试版本?
- 29. 谷歌应用程序引擎 - 重新编译GWT模块
- 30. 谷歌应用程序引擎找不到本地python模块