tornado 4.0 的tornado.tcpclient 简化客户端操作

生产环境下主要用于 HTTP / WebSocket 服务器,对此而言我觉得这个版本没啥亮点。对我有用的估计是那个新增的 tornado.tcpclient 模块,可以简化客户端的编写。

tornado.tcpclient 简化客户端操作

客户端操作

下面是随手写的个例子,向本地的 Redis 服务器调用 "set a 1" 和 "get a",并输出结果,整个过程是异步的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from contextlib import closing

from tornado.gen import coroutine
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.tcpclient import TCPClient
from tornado.web import Application, RequestHandler

class HomeHandler(RequestHandler):
    @coroutine
    def get(self):
        self.set_header('Content-Type', 'text/plain')

        client = TCPClient()
        stream = yield client.connect('127.0.0.1', 6379)

        with closing(stream):
            stream.write('set a 1\r\n')
            data = yield stream.read_until('\r\n')
            self.write(data)
            self.flush()

            stream.write('get a\r\n')
            data = yield stream.read_until('\r\n')
            self.write(data)
            data = yield stream.read_until('\r\n')
            self.finish(data)

def main():
    application = Application(
        [('/', HomeHandler)],
        debug=True)
    http_server = HTTPServer(application)
    http_server.listen(8888)
    IOLoop.instance().start()

if __name__ == "__main__":
    main()

结果

1
2
3
+OK
$1
1

ab 测试了一下,单进程在我的 MBP 上有 600 多 QPS,看上去还不错。

tornado 4.0 的变化

http://www.tornadoweb.org/en/stable/releases/v4.0.0.html#highlights

本文网址: https://pylist.com/topic/60.html 转摘请注明来源

Suggested Topics

tornado websocket 客户端与服务器端示例

最近在网上找了些websocket的资料看了下,node和tornado等等本身已经实现了websocket的封装,所以使用起来会比较简单,php如果想要写websocket还需要自己跑一整套流程,比较麻烦。...

Tornado 搭建基于 WebSocket 的聊天服务

这年头 Python web 框架是有点泛滥了. 下面要介绍的是 facebook 的开源框架 tornado. 这东西比较简单, 而且自带 WebSocket 支持, 可以用它做个简单的聊天室. ...

在128M的VPS上配置mysql+Tornado+Nginx笔记

最近 123systems http://goo.gl/2Q0X2 又推出一年$10的便宜 VPS,128M内存,可以用来学习。在这样的vps 上放一个博客或做反向代理绰绰有余,买下后尝试配一个mysql+Tornado+Nginx 环境。...

Leave a Comment