2010-11-07 206 views
0

<下面<大的更新意味着它只是一个记录问题>>应用程序引擎Python安装

我试图让应用程序引擎安装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“欢迎”消息传递时,/但是当我通过/样本我没有得到任何地方。另外,我似乎无法记录消息。我打电话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消息。我发现服务器正在调用Sample处理程序,看起来好像甚至检查int param是否正确。

我认为问题是我只是看不到我的日志消息!任何想法为什么他们没有显示出来?我通过这些Util.log()调用调用logging.debug()。是否有一些标志或东西抑制了我的输出显示在日志控制台中?

+0

Sample.HttpRequestHandler是什么样的? – Cameron 2010-11-07 19:03:50

回答

0

我发现确实这是一个日志记录问题(下面的所有内容都工作得很好)。我使用谷歌应用程序引擎启动,所以这里就是我曾与设置做的就是它的工作:

进入编辑 - >应用程序设置

下特旗

添加标志-d

我还选择在启动时清除数据存储,但我认为这不会影响日志。

0

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

要获取日志,可以使用dev_appserver.py启动SDK应用程序服务器并查看它所吐出的日志,或者单击Google App Engine启动器GUI中的日志按钮。

+0

我不确定我关注。你是说我没有一个Sample类,它是RequestHandler的子类,或者我不应该拥有一个?我有一个Sample.py,里面定义了一个HttpRequestHandler类,所以它在那里似乎是正确的。我会在上面解释我的日志问题。问题没有看到日志窗口。这是调用logging.debug(“测试”)没有显示任何东西在控制台。 – Joey 2010-11-07 18:59:51

+0

在您之前的代码中,您展示了'/ Sample'到Sample.HttpRequestHandler的映射,但没有显示该类的代码。现在我看到你已经添加了这个类。 – 2010-11-08 18:36:05

相关问题