我阅读了Google App Engine后端文档,但我仍然无法理解如何从Python启动/停止后端(动态后端)(我猜是使用URLFetch)。
有人可以给我一个代码示例吗?后端不在应用程序的默认版本上。
答案 0 :(得分:3)
使用appcfg
启动和停止后端。来自the documentation:
appcfg backends <dir> start <backend>
将后端状态设置为START,允许它接收HTTP请求。 驻留后端立即开始。动态后端无法启动 直到第一个用户请求到达。如果后端是没有效果的话 已经开始了。
appcfg backends <dir> stop <backend>
将后端状态设置为STOP并关闭所有正在运行的实例。 停止的后端无法接收HTTP请求;如果它收到了 请求,它返回404响应。如果是,此命令无效 后端已经停止了。
答案 1 :(得分:3)
这取决于您使用的后端类型,“Resident Backends”无法仅通过管理控制台或命令行从生产环境关闭,而“动态后端”在闲置几分钟后关闭
因此,如果您使用动态后端,您只需发送一个请求,告诉它停止它正在做什么,它将自动关闭。
http://code.google.com/intl/iw/appengine/docs/python/config/backends.html#Types_of_Backends
修改强> 的
这可行的示例:
from google.appengine.ext import webapp
from google.appengine.api import memcache
from google.appengine.ext.webapp.util import run_wsgi_app
import time
class ShutdownHandler(webapp.RequestHandler):
def get(self):
memcache.put('backendShutdown', True, 60)
class StartHandler(webapp.RequestHandler):
def get(self):
lastCheck = time.time()
while True:
if time.time() - 60 > lastCheck:
stopBackend = memcache.get('backendShutdown')
if stopBackend:
memcache.delete('backendShutdown')
break
lastCheck = time.time()
if __name__ == '__main__':
_handlers = [(r'/_ah/start', StartHandler),
(r'/backend/worker/shutdown', ShutdownHandler)] # somekind of handler for shutdown
run_wsgi_app(webapp.WSGIApplication(_handlers))
要停止它,你会使用:
from google.appengine.api import backends, urlfetch
url = backends.get_url('worker') + '/backend/worker/shutdown'
urlfetch.fetch(url)