<< Большое обновление ниже подразумевает, что это просто проблема регистрации >>
Я пытаюсь настроить движок приложения с помощью 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 (). Есть ли какой-либо флаг или что-то, что препятствует отображению моего вывода в консоли журнала?