App Engine 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 "欢迎" 消息,但当我输入 /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
我知道这样做有点傻,但因为我看不到任何日志消息,我就随便加了一堆 "raise StandardError" 的调用,只是想看看在我尝试调用 Sample 消息时,浏览器窗口会显示什么异常输出。我发现服务器似乎正常调用了 Sample 处理程序,甚至检查 int 参数也没问题。
我觉得问题在于我根本看不到我的日志消息!有没有人知道为什么它们不显示?我通过那些 Util.log() 调用来调用 logging.debug()。是不是有什么标志或者设置让我的输出在日志控制台上不显示?
2 个回答
你没有为 "/Sample"
这个路径创建一个 RequestHandler
的子类,就像你为 "/"
这个路径创建了 MainPage
一样。
要查看日志,你可以用 dev_appserver.py
启动你的 SDK 应用服务器,然后看看它输出的日志,或者在 Google App Engine 启动器的界面中点击日志按钮。
我发现确实是个日志问题(下面的东西都运行得很好)。我使用的是Google App Engine Launcher,所以我在设置中做了以下调整来让它正常工作:
进入编辑 -> 应用设置
在额外标志下添加标志 -d
我还选择了在启动时清空数据存储,但我觉得这对日志没有影响。