Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检测是否在App Engine环境中导入模块_Python_Google App Engine - Fatal编程技术网

Python 检测是否在App Engine环境中导入模块

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.

我想做的是修补一个现有的Python模块,该模块使用urllib2在AppEngine上运行,但我不想破坏它,以便它可以在其他地方使用。因此,我正在寻找一个快速的解决方案来测试模块是否导入到App Engine环境中。在urllib2上捕获ImportError可能不是最好的解决方案。

您可以简单地使用sys.modules来测试模块是否已导入(我以Unicode数据为例):


您可以对关键环境变量进行简单检查。不过,还不知道这到底有多可靠

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'}