app引擎python设置

时间:2010-11-07 18:29:41

标签: python google-app-engine installation

<<下面的大更新意味着它只是一个日志问题>>

我正在尝试使用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()

当我在localhost上运行时,我在传入时会收到我的html“欢迎”消息/但是当我传入/ 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参数是对的。

我认为问题在于我只是看不到我的日志消息!知道为什么他们没有露面吗?我通过那些Util.log()调用调用logging.debug()。是否有一些标志或某些内容阻止我的输出显示在日志控制台中?

2 个答案:

答案 0 :(得分:0)

RequestHandler路径没有"/Sample"个子类,就像您对"/"路径所做的那样(即MainPage)。

要获取日志,请使用dev_appserver.py启动SDK应用服务器并查看其吐出的日志,或单击Google App Engine Launcher GUI中的“日志”按钮。

答案 1 :(得分:0)

我发现它确实是一个日志记录问题(下面的所有内容都工作得很好)。我使用Google App Engine Launcher,所以这就是我必须要做的设置才能让它发挥作用:

进入编辑 - &gt;应用程序设置

在Extra Flags下

添加标志-d

我还选择在我的设置中清除数据存储区,但我不认为这会影响日志。