проблемы с развертыванием приложения для бутылок с движком приложений Google

новичок здесь - я пытался создать "Hello World" в бутылке с помощью движка приложений Google. У меня появилась часть «hello world», но даже на странице индекса я получаю следующий вывод: «Hello world! Status: 500»
Если я попытаюсь добавить новые маршруты (например, '/ page' route), и я перехожу к новому маршруту, я получаю «Ошибка сервера: на веб-сайте произошла ошибка при извлечении ... Возможно, он отключен для обслуживания или настроен неправильно». После перехода на неправильно настроенную страницу, если я попытаюсь вернуться к '/', я также получу сообщение об ошибке сервера. Я поместил bottle.py в свой корневой каталог. Может ли кто-нибудь помочь мне правильно настроить мой файл? Спасибо!

import bottle 
from bottle import route, template, request, error, debug

@route('/')
def index():
    return "Hello World!"

@route('/page')
def page():
    return 'page!'

bottle.debug(True)
bottle.run(server='gae')

person user1679332    schedule 30.09.2012    source источник
comment
опубликуйте трассировку фактической ошибки. если вы получаете эти ошибки локально, проверьте выходные данные sdk, если они развернуты, проверьте журналы ошибок.   -  person aschmid00    schedule 30.09.2012
comment
У меня такая же проблема. Когда вы используете Python 2.7 и используете многопоточность, тогда: A) если обработчиком является main.py: фатальная ошибка при загрузке конфигурации приложения: threadsafe не может быть включен с помощью обработчика CGI: main.py B) если обработчик является основным: Status 500, ' module 'не вызывается C) если вы установите обработчик на main.app и импортируете bottle.app в область действия обработчика, то: ошибка вызова приложения, недопустимое количество аргументов   -  person Stefan    schedule 17.11.2012


Ответы (3)


Вот хороший учебник для бутылки по GAE: http://blog.rutwick.com/use-bottle-python-framework-with-google-app-engine

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я не запускал учебник, но он выглядит правильно.

main.py:

from framework import bottle
from framework.bottle import route, template, request, error, debug
from google.appengine.ext.webapp.util import run_wsgi_app

@route('/')
def DisplayForm():
    message = 'Hello World'
    output = template('templates/home', data = message)
    return output

def main():
    debug(True)
    run_wsgi_app(bottle.default_app())

@error(403)
def Error403(code):
    return 'Get your codes right dude, you caused some error!'

@error(404)
def Error404(code):
    return 'Stop cowboy, what are you trying to find?'

if __name__=="__main__":
    main()

app.yaml:

application: my-bottle-app
version: 1
runtime: python
api_version: 1

handlers:
- url: /styles
  static_dir: styles

- url: /.*
  script: main.py

Как вы видите, есть ряд отличий от вашего примера кода. Учебник хорошо объясняет их, поэтому я не буду здесь вдаваться в подробности.

person Sologoub    schedule 02.10.2012

Это может помочь:

app.yaml:

application: my-app
version: 1
runtime: python27
api_version: 1
threadsafe: yes

- url: .*
  script: main.app

main.py:

import bottle

@bottle.route('/')
def root():
    return 'hello!'

bottle.run(server='gae', debug=True)
app = bottle.app()

Вот оригинальный ответ от GitHub. https://github.com/defnull/bottle/issues/401

person Stefan    schedule 17.11.2012

При использовании WSGI, как в коде запуска App Engine + Bottle, вы можете вызвать bottle.debug(), когда ваш код работает на сервере разработки:

import bottle
import os

DEBUG = os.environ.get('SERVER_SOFTWARE','').startswith('Development')  
bottle.debug(DEBUG)
app = bottle.Bottle()

И в app.yaml:

handlers:
- url: .*
  script: main.app
person Tzach    schedule 24.01.2016