2010-11-07 71 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