V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
leben
V2EX  ›  Python

关于tornado的两个问题

  •  
  •   leben · 2012-04-27 15:45:55 +08:00 · 4635 次点击
    这是一个创建于 4383 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1、如果一个请求既有post还有get,应该怎么处理?
    2、tornado是否适合用于开发商业产品。主要考虑跨平台部署和部署的简便性,毕竟产品安装和基于linux的网站还是有很大区别的。还有就是tornado在windows平台下的性能,商业产品不会有很大的并发,但是对稳定性的要求高一些,容错性要好。

    谢谢,希望有经验的朋友交流一下。
    20 条回复    1970-01-01 08:00:00 +08:00
    fanzeyi
        1
    fanzeyi  
       2012-04-27 15:50:23 +08:00
    1.

    class PageHandler(BaseHandler):
    def get(self):
    # for method GET
    pass
    def post(self):
    # for method POST
    pass

    2. 不要考虑 Windows
    fanzeyi
        2
    fanzeyi  
       2012-04-27 15:51:05 +08:00
    居然没缩进了。。

    https://gist.github.com/2507144
    leben
        3
    leben  
    OP
       2012-04-27 15:59:20 +08:00
    @fanzeyi
    1、这个我知道,我是说,如果在post(self)里面还有一些get的参数要获取应该怎么做?好像get和post是针对请求方式分开处理的。呵呵,对tornado不是很熟。
    2、windows平台必须要考虑啊,大部分的商业用户还是用windows平台来搭建环境。比如说OA或者CRM什么的,如果使用php,完全可以把apache、php和mysql打包然后做一个安装包。不知道基于tornado开发,是否可以也可以用这种方式部署。

    考虑python是因为可以编译,php的代码保护太悲催了。又不想使用c#或者java。因为基于这个可以私有部署的产品,我们还有一个web app。希望能基于同样的技术平台开发。
    fanzeyi
        4
    fanzeyi  
       2012-04-27 16:09:50 +08:00
    @leben

    1. 没明白是什么意思. (用 input hidden 传递?)

    2. 首先你就不可能在 Windows 下使用 Tornado , Windows 下就没有 epoll 这个东西.
    bhuztez
        5
    bhuztez  
       2012-04-27 16:13:19 +08:00
    Twisted 吧
    raptium
        6
    raptium  
       2012-04-27 16:22:25 +08:00
    tornado 里面 get 和 post 的 arguments 不分的,RequestHandler 的 get_argument 和 get_arguments 可以提取需要的参数。如果某个 key 出现了多次的话,用 get_arguments 会得到一个包含所有 value 的 list
    adow
        7
    adow  
       2012-04-27 16:22:45 +08:00
    可以一个请求既有get 又有post,楼主说的是post的时候,地址里面还是带有参数么?
    adow
        8
    adow  
       2012-04-27 16:23:11 +08:00
    可以一个请求既有get 又有post?楼主说的是post的时候,地址里面还是带有参数么?
    raptium
        9
    raptium  
       2012-04-27 16:29:06 +08:00
    其实把参数叫成 GET 和 POST 不知道是怎么开始的(难道又是 PHP ?)。所谓的 GET 是处理 query string 得来的,而 query string 是 URL 的一部分,所以 HTTP 的所有 method 都可以有 `GET` 参数,所以他根本就和 GET 没啥关系,就不该叫 GET。
    leben
        10
    leben  
    OP
       2012-04-27 16:30:04 +08:00
    @fanzeyi
    1、例如我post到people/create?type_id=xxx,怎么样在post里面获得type_id?

    2、tornado使用select在windows上的性能会差成什么样子?其实面向中小企业的商业应用,并发连10个都不会超过,关键是事物处理和服务器长时间运行后的内存占用会怎么样?
    raptium
        11
    raptium  
       2012-04-27 16:31:03 +08:00
    @leben self.get_argument('type_id')
    fanzeyi
        12
    fanzeyi  
       2012-04-27 16:35:09 +08:00
    @leben 拜托那个叫 query string ....
    leben
        13
    leben  
    OP
       2012-04-27 16:37:17 +08:00
    @raptium
    谢谢,知道怎么访问了。get和post主要是php为这两个东西设计了两个对应的参数吧,所以总是觉得这是不一样的东西,呵呵。tornado这个放在一起处理够很简单。
    self.request.arguments 这个直接拿到了所有的数据。
    leben
        14
    leben  
    OP
       2012-04-27 16:38:21 +08:00
    @fanzeyi
    querystring = $_GET,让php教坏了,:P
    leben
        15
    leben  
    OP
       2012-04-27 16:41:06 +08:00
    @fanzeyi @raptium

    如果tornado不适合部署在win平台上,那么在win平台下python web应用,用什么好一些。最好能兼顾linux。

    tornado在win平台下,性能到底会差成什么样子?
    fanzeyi
        16
    fanzeyi  
       2012-04-27 16:46:44 +08:00
    刚刚开 kvm 测试了下还真能装上 tornado .. 性能真没测试过.. 搜了下似乎也没看到有相关的文章介绍..
    CoX
        17
    CoX  
       2012-04-27 16:53:01 +08:00
    并发10个都不会超过的话,windows上还是可以凑合着用的
    fanzeyi
        18
    fanzeyi  
       2012-04-27 16:59:01 +08:00
    @leben 对了. 不要寄希望在 Python 的编译上
    leben
        19
    leben  
    OP
       2012-04-27 16:59:40 +08:00
    @fanzeyi 呵呵,tornado在windows可以跑起来,据说是用select方式运行,但是这个select会不会长时间运行之后内存占用特别高。刚才看有人以后也许会有针对win平台的patch。

    @CoX 私有部署的商业产品都是按并发卖,一个几十个人的公司,也不太可能有很大的并发。
    leben
        20
    leben  
    OP
       2012-04-27 17:02:17 +08:00
    @fanzeyi
    编译这东西,不要说脚本语言了,就算是vb那样的二进制也照样可以破解和反编译,所以只是一个摆设而已,呵呵。有总比没有强吧。相对php,我们看重python代码的规范化。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2825 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:13 · PVG 20:13 · LAX 05:13 · JFK 08:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.