关于tornado的两个问题

2012-04-27 15:45:55 +08:00
 leben
1、如果一个请求既有post还有get,应该怎么处理?
2、tornado是否适合用于开发商业产品。主要考虑跨平台部署和部署的简便性,毕竟产品安装和基于linux的网站还是有很大区别的。还有就是tornado在windows平台下的性能,商业产品不会有很大的并发,但是对稳定性的要求高一些,容错性要好。

谢谢,希望有经验的朋友交流一下。
4754 次点击
所在节点    Python
20 条回复
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
2012-04-27 15:51:05 +08:00
居然没缩进了。。

https://gist.github.com/2507144
leben
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
2012-04-27 16:09:50 +08:00
@leben

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

2. 首先你就不可能在 Windows 下使用 Tornado , Windows 下就没有 epoll 这个东西.
bhuztez
2012-04-27 16:13:19 +08:00
Twisted 吧
raptium
2012-04-27 16:22:25 +08:00
tornado 里面 get 和 post 的 arguments 不分的,RequestHandler 的 get_argument 和 get_arguments 可以提取需要的参数。如果某个 key 出现了多次的话,用 get_arguments 会得到一个包含所有 value 的 list
adow
2012-04-27 16:22:45 +08:00
可以一个请求既有get 又有post,楼主说的是post的时候,地址里面还是带有参数么?
adow
2012-04-27 16:23:11 +08:00
可以一个请求既有get 又有post?楼主说的是post的时候,地址里面还是带有参数么?
raptium
2012-04-27 16:29:06 +08:00
其实把参数叫成 GET 和 POST 不知道是怎么开始的(难道又是 PHP ?)。所谓的 GET 是处理 query string 得来的,而 query string 是 URL 的一部分,所以 HTTP 的所有 method 都可以有 `GET` 参数,所以他根本就和 GET 没啥关系,就不该叫 GET。
leben
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
2012-04-27 16:31:03 +08:00
@leben self.get_argument('type_id')
fanzeyi
2012-04-27 16:35:09 +08:00
@leben 拜托那个叫 query string ....
leben
2012-04-27 16:37:17 +08:00
@raptium
谢谢,知道怎么访问了。get和post主要是php为这两个东西设计了两个对应的参数吧,所以总是觉得这是不一样的东西,呵呵。tornado这个放在一起处理够很简单。
self.request.arguments 这个直接拿到了所有的数据。
leben
2012-04-27 16:38:21 +08:00
@fanzeyi
querystring = $_GET,让php教坏了,:P
leben
2012-04-27 16:41:06 +08:00
@fanzeyi @raptium

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

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

@CoX 私有部署的商业产品都是按并发卖,一个几十个人的公司,也不太可能有很大的并发。
leben
2012-04-27 17:02:17 +08:00
@fanzeyi
编译这东西,不要说脚本语言了,就算是vb那样的二进制也照样可以破解和反编译,所以只是一个摆设而已,呵呵。有总比没有强吧。相对php,我们看重python代码的规范化。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/33839

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX