contrib.appengineis_appengine_sandbox()是否适用于GoogleAppEngine平台
contrib.appengine的is_appengine_sandbox()函数是用于检查当前代码是否在Google App Engine的沙箱环境下运行。当代码在开发服务器上或者部署在App Engine上时,可以使用该函数来判断代码执行的环境。
在App Engine平台上,可以通过以下方式使用is_appengine_sandbox()函数:
from google.appengine.api import app_identity
from google.appengine.ext import ndb
from google.appengine.ext import webapp
if webapp.is_appengine_sandbox():
print("Running in App Engine sandbox.")
else:
print("Not running in App Engine sandbox.")
if app_identity.is_appengine():
print("Running on App Engine.")
else:
print("Not running on App Engine.")
上述代码使用了两个不同的函数来检查当前代码执行的环境。其中,is_appengine_sandbox()函数用于检查是否在App Engine的沙箱环境中执行,而is_appengine()函数则用于检查是否在App Engine平台上执行。
需要注意的是,is_appengine_sandbox()函数只适用于App Engine 1.9.15版本及以上。在更早的版本中,可以使用djangoappengine.utils.on_production_server()函数来判断是否在生产服务器上运行。
下面是一个完整的使用示例,展示了如何使用is_appengine_sandbox()函数来判断当前代码执行环境并做出相应的处理:
import os
import webapp2
from google.appengine.api import app_identity
from google.appengine.ext import ndb
from google.appengine.ext.webapp import template
class MainPage(webapp2.RequestHandler):
def get(self):
if self.in_appengine_sandbox():
self.response.write("Running in App Engine sandbox.")
else:
self.response.write("Not running in App Engine sandbox.")
if self.on_appengine():
self.response.write("<br>Running on App Engine.")
else:
self.response.write("<br>Not running on App Engine.")
self.response.write("<br><br>")
template_values = {
'app_id': app_identity.get_application_id(),
'app_version': os.environ['CURRENT_VERSION_ID']
}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
@staticmethod
def in_appengine_sandbox():
return 'APPENGINE_RUNTIME' in os.environ and os.environ['APPENGINE_RUNTIME'] == 'python'
@staticmethod
def on_appengine():
return app_identity.is_appengine()
app = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
上述代码中,MainPage类继承自webapp2.RequestHandler,用于处理GET请求。在代码中,首先通过self.in_appengine_sandbox()方法判断当前代码是否在App Engine的沙箱环境下执行。根据is_appengine_sandbox()函数的返回值,可以执行不同的逻辑。接着,通过self.on_appengine()方法判断当前代码是否在App Engine平台上执行,同样根据is_appengine()函数的返回值,可以执行不同的逻辑。
代码的最后部分是一个简单的模板,使用template.render方法来渲染index.html文件,并将渲染结果输出到响应中。
综上所述,contrib.appengine的is_appengine_sandbox()函数适用于Google App Engine平台,并且可以结合其他App Engine的API和方法来判断当前代码的执行环境,从而进行相应的处理。
