Запуск и остановка бэкэндов Google App Engine - PullRequest
4 голосов
/ 28 августа 2011

Я читаю документы бэкэнда Google App Engine, но до сих пор не могу понять, как запускать / останавливать бэкэнды (динамические бэкэнды) из Python (я думаю, с использованием URLFetch).

Может кто-нибудь дать мнепример кода?Бэкэнд не будет в версии приложения по умолчанию.

Ответы [ 2 ]

3 голосов
/ 29 августа 2011

Зависит от того, какой тип бэкэнда вы используете. «Резидентные бэкэнды» не могут быть отключены из производственной среды только через консоль администратора или командную строку, в то время как «Динамические бэкэнды» отключаются после простоя в течение нескольких минут. .

Так что, если вы используете 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)
3 голосов
/ 28 августа 2011

Используйте appcfg для запуска и остановки бэкэндов. Из документации :

appcfg backends <dir> start <backend>

Устанавливает состояние бэкэнда в START, что позволяет ему получать HTTP-запросы. Резидентные бэкэнды начинаются немедленно. Динамические бэкэнды не запускаются пока не поступит первый запрос пользователя. Не имеет никакого эффекта, если бэкэнд был уже началось.

appcfg backends <dir> stop <backend>

Устанавливает состояние бэкэнда в STOP и закрывает все запущенные экземпляры. Остановленный сервер не может получать HTTP-запросы; если он получает запрос возвращает 404 ответа. Эта команда не действует, если бэкэнд был уже остановлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...