Зависит от того, какой тип бэкэнда вы используете. «Резидентные бэкэнды» не могут быть отключены из производственной среды только через консоль администратора или командную строку, в то время как «Динамические бэкэнды» отключаются после простоя в течение нескольких минут. .
Так что, если вы используете Dynamic 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)