免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2815 | 回复: 6
打印 上一主题 下一主题

GAE中如何终止代码运行? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-18 21:36 |只看该作者 |倒序浏览

  1. class PublicPage(webapp.RequestHandler):
  2.     def initialize(self, request, response):
  3.         webapp.RequestHandler.initialize(self, request, response)
  4.         self.is_mobile = 'vnd.wap.wml'  in request.accept.header_value
  5.         if not self.is_mobile:
  6.             self.response.set_status(404)
  7.             #终止运行,这里怎么写?
复制代码

  1. class Mobile(PublicPage):
  2.     def get(self):
  3.         #.............
复制代码
注释的地方该怎么写?类似于php的exit或asp.net中的Response.End()?
import sys
sys.exit()是不行的

论坛徽章:
0
2 [报告]
发表于 2010-03-18 21:54 |只看该作者
本帖最后由 luffy.deng 于 2010-03-19 07:52 编辑

response.set_status(404)  这个是向客户端反馈404错误么?那你还需要终止什么东西?如果是要退出initialize()  直接return不就行了?

论坛徽章:
0
3 [报告]
发表于 2010-03-19 09:24 |只看该作者
response.set_status(404)  这个是向客户端反馈404错误么?那你还需要终止什么东西?如果是要退出initializ ...
luffy.deng 发表于 2010-03-18 21:54


的确是返回404了,但子类还是在执行啊,return也没用的

  1. class PublicPage(webapp.RequestHandler):
  2.     def initialize(self, request, response):
  3.         webapp.RequestHandler.initialize(self, request, response)
  4.         self.is_mobile = 'vnd.wap.wml'  in request.accept.header_value
  5.         if not self.is_mobile:
  6.             self.response.set_status(404)
  7.             #终止运行,这里怎么写?

  8. class Mobile(PublicPage):
  9.     def get(self):
  10.         #这里的任何代码都会执行
复制代码

论坛徽章:
0
4 [报告]
发表于 2010-03-19 09:41 |只看该作者
我用的是这个
import sys
sys.exit(1)

貌似可以,你试试~

论坛徽章:
0
5 [报告]
发表于 2010-03-19 10:28 |只看该作者
楼上的,不行啊
直接报错
Traceback (most recent call last):
  File "C:\Python25\lib\wsgiref\handlers.py", line 92, in run
    self.result = application(self.environ, self.start_response)
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 497, in __call__
    handler.initialize(request, response)
  File "D:\rss4py.appspot.com\main.py", line 121, in initialize
    sys.exit(1)
SystemExit: 1
INFO     2010-03-19 02:28:14,895 dev_appserver.py:3246] "GET / HTTP/1.1" 500 -

论坛徽章:
0
6 [报告]
发表于 2010-03-21 22:09 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2010-03-22 15:04 |只看该作者
本帖最后由 luffy.deng 于 2010-03-22 15:08 编辑

回复 3# 幻想曲yibin

不知道你的为什么会出现这种现象,我测试的结果不会出现你说的情况。下面是测试代码,mobile的get不会执行,浏览器显示找不到网页。

  1. from google.appengine.ext import webapp
  2. from google.appengine.ext.webapp import util


  3. class MainHandler(webapp.RequestHandler):
  4.     def initialize(self, request, response):
  5.         webapp.RequestHandler.initialize(self, request, response)
  6.         if  not  ('vnd.wap.wml'  in request.accept.header_value):
  7.             self.response.set_status(404)

  8. class Mobile(MainHandler):
  9.     def get(self):
  10.         self.response.out.write('hello mobile')

  11. def main():
  12.     application = webapp.WSGIApplication([('/', Mobile)],
  13.                                        debug=True)
  14.     util.run_wsgi_app(application)

  15. if __name__ == '__main__':
  16.     main()
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP