Python 检测是否在App Engine环境中导入模块
我想做的是修补一个现有的Python模块,该模块使用urllib2在AppEngine上运行,但我不想破坏它,以便它可以在其他地方使用。因此,我正在寻找一个快速的解决方案来测试模块是否导入到App Engine环境中。在urllib2上捕获ImportError可能不是最好的解决方案。您可以简单地使用sys.modules来测试模块是否已导入(我以Unicode数据为例):Python 检测是否在App Engine环境中导入模块,python,google-app-engine,Python,Google App Engine,我想做的是修补一个现有的Python模块,该模块使用urllib2在AppEngine上运行,但我不想破坏它,以便它可以在其他地方使用。因此,我正在寻找一个快速的解决方案来测试模块是否导入到App Engine环境中。在urllib2上捕获ImportError可能不是最好的解决方案。您可以简单地使用sys.modules来测试模块是否已导入(我以Unicode数据为例): 您可以对关键环境变量进行简单检查。不过,还不知道这到底有多可靠 import os, logging try: os.
您可以对关键环境变量进行简单检查。不过,还不知道这到底有多可靠
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')
您还可以在任何模块内的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'}
{'USER_EMAIL':'',
“数据中心”:“us1”,
“wsgi.version”:(1,0),
“请求ID散列”:“E2C19D51”,
“服务器名称”:“我的桌面”,
“查询字符串”:“”,
“HTTP_ACCEPT”:“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”,
“APPENGINE_运行时”:“python27”,
“wsgi.input”:,
“服务器协议”:“HTTP/1.1”,
'HTTPS':'off',
“用户是管理员”:“0”,
“TZ”:“UTC”,
“远程地址”:“192.168.0.2”,
“HTTP_X_APPENGINE_COUNTRY”:“ZZ”,
“HTTP_USER_AGENT”:“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/27.0.1453.110 Safari/537.36”,
“服务器软件”:“开发/2.0”,
“HTTP_缓存控制”:“最大年龄=0”,
“默认版本主机名”:“mydesktop:8080”,
“服务器端口”:“8080”,
'wsgi.run_once':False,
“请求方法”:“获取”,
“用户ID:”,
'AUTH_DOMAIN':'gmail.com',
“用户昵称”:“,
“用户组织”:“,
“wsgi.multiprocess”:True,
“实例ID”:“8a8e02e6efa8d195346ae0c90cfeafce8aa2”,
“路径信息”:“/”,
‘HTTP_ACCEPT_LANGUAGE’:‘en-US,en;q=0.8’,
“HTTP_主机”:“mydesktop:8080”,
“wsgi.errors”:,
'APPLICATION_ID':'dev~myapp',
'wsgi.multi-thread':True,
“当前版本ID”:“版本1”,
“脚本名称”:“,
“请求日志ID”:“4eafbc91ca4ebd5fee53f19eeab2eb26d243d9ddc92b6b9bc0a063eabdc84cfff”,
'wsgi.url_scheme':'http'}
希望有帮助
{'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'}