Python Torando6.2

总是平生未行处,醉来堪赏醒堪愁。


Tornado 是一个python web框架和异步网络库,最初开发于 FriendFeed . 通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接,使其非常适合 long polling , WebSockets 以及其他需要与每个用户建立长期连接的应用程序。

import asyncio

import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

async def main():
    app = make_app()
    app.listen(8888)
    await asyncio.Event().wait()

# 同步并非使用了异步 异步往下看
if __name__ == "__main__":
    asyncio.run(main())

线程和wsgi

通常,Tornado代码不是线程安全的。Tornado中唯一可以安全地从其他线程调用的方法是 IOLoop.add_callback . 您也可以使用 IOLoop.run_in_executor 在另一个线程上异步运行阻塞函数,但请注意,传递给 run_in_executor 应避免引用任何 Tornado 对象。 run_in_executor 是与阻塞代码交互的推荐方法。

asyncio 整合

Tornado与标准库集成 asyncio 模块和共享相同的事件循环(默认情况下,从Tornado 5.0开始)。通常,设计用于 asyncio 可以与 Tornado 自由混合。

import json  
import tornado.ioloop  
import tornado.web  
import tornado.httpserver  
from tornado.options import define, options  
  
  
define('port', default=8000, help='default port', type=int)  
  
  
class IndexHandler(tornado.web.RequestHandler):  
    def get(self):  
        self.write("Hello, Tornado")  
  
  
def make_app():  
    return tornado.web.Application([  
        (r"/", IndexHandler),  
    ])  
  
  
if __name__ == "__main__":  
    tornado.options.parse_command_line()  
    app = make_app()  
    http_server = tornado.httpserver.HTTPServer(app)  
    http_server.listen(options.port)  
    tornado.ioloop.IOLoop.instance().start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值