настройка Python для движка приложения - PullRequest
0 голосов
/ 07 ноября 2010

<< Большое обновление ниже подразумевает, что это просто проблема регистрации >>

Я пытаюсь настроить движок приложения с помощью python, и у меня возникла проблема, которая, как я подозреваю, является простым шагом, который я пропустил. Мой app.yaml говорит это:

application: something  #name here is the one I used to register i.e. something.appspot.com
version: 1
runtime: python
api_version: 1

handlers:
- url: .*
  script: myapp.py

и мой myapp.py говорит следующее:

import cgi
import Utils
import Sample
import logging

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db

class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.out.write('<html><body>')
        self.response.out.write('Welcome to my server! Why is this not working?')
        self.response.out.write('</body></html>')

def main():
    application = webapp.WSGIApplication([('/', MainPage),
                                        ('/Sample', Sample.HttpRequestHandler)],
                                        debug=True)

    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Когда я запускаю это на локальном хосте, я получаю html-сообщение "Welcome" при передаче в /, но когда я передаю / Sample, я ничего не получаю. Кроме того, я не могу регистрировать сообщения. Я вызываю logging.debug (), и на консоли журнала ничего не отображается. Есть идеи? Вот мой Sample.py. Извините за странные вкладки. Копирование и вставка не выстроили их в линию, и редактирование вручную не помогло.

class HttpRequestHandler(webapp.RequestHandler):
    def get(self):

        Utils.log("Sample handler called")

        try:
            if HttpRequestHandler.requestIsValid(self):

            intParam = int(self.request.get('param1'))
            floatParam = float(self.request.get('param1'))
            stringParam = self.request.get('param1')

            Utils.log("params: " + str(intParam) + " " + str(floatParam) + " " + stringParam)

            if intParam == 1:
                self.response.set_status(200, message="Success")
            else:
                self.response.set_status(400, message="Error processing sample command")

            else:
            raise StandardError

        except Exception, e:
            logging.debug("Exception: %s" % (e))
            self.response.set_status(400, message="Error processing sample command")

    def requestIsValid(self):
        if self.request.get('param1') != "" and \
        self.request.get('param2') != "" and \
        self.request.get('param3') != "":
            return True
        else:
            return False

Так что я знаю, что это совершенно неубедительно, но так как я не мог видеть никаких сообщений в журнале, я добавил несколько вызовов "поднимать StandardError", просто чтобы посмотреть, что будет выдавать вывод исключений в окно моего браузера, когда я пытаюсь вызвать Пример моего сообщения. Что я обнаружил, так это то, что сервер вызывает обработчик Sample просто замечательно, даже проверяя, что параметр int верен.

Мне кажется, проблема в том, что я просто не вижу своих сообщений в журнале! Есть идеи, почему они не появляются? Я вызываю logging.debug () через эти вызовы Util.log (). Есть ли какой-либо флаг или что-то, что препятствует отображению моего вывода в консоли журнала?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2010

Я обнаружил, что на самом деле это была проблема с журналированием (все под ней работало просто отлично). Я использую Google App Engine Launcher, поэтому вот что мне нужно было сделать с настройками, чтобы заставить его работать:

Зайдите в Редактировать -> Настройки приложения

в разделе Дополнительные флаги добавьте флаг -d

Я также решил очистить хранилище данных при запуске в моих настройках, но я не думаю, что это влияет на журналы.

0 голосов
/ 07 ноября 2010

У вас нет подкласса RequestHandler для пути "/Sample", как у вас для пути "/" (т.е. MainPage).

Чтобы получить журналы, либо запустите сервер приложений SDK с dev_appserver.py и посмотрите журналы, которые он выплевывает, либо нажмите кнопку «Журналы» в графическом интерфейсе средства запуска Google App Engine.

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