tornado 通过定制二级域名制作django式分层路由

本文详细介绍了Tornado框架的基本知识,包括安装、二级域名的实现、模板系统、静态文件处理、CSRF与Cookie管理、自定义Session的实现,以及如何通过配置文件和加载函数实现Django式的分层路由。Tornado作为一个高性能的Web服务器,适合处理高并发场景,其轻量级设计和强大的异步能力使其在Web开发中独具优势。
摘要由CSDN通过智能技术生成

tornado框架基本知识总结

 

目录

 

tornado

Tornado是使用Python编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。

我们现在所知道的Tornado是基于Bret Taylor和其他人员为FriendFeed所开发的网络服务框架,当FriendFeed被Facebook收购后得以开源。不同于那些最多只能达到10,000个并发连接的传统网络服务器,Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的设计使得其成为一个拥有非常高性能的框架。此外,它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具。

 

Tornado实现二级域名的函数,是要传入两个参数,一个是二级域名名称,一个是url映射规则。

其中url映射规则,也就是一个列表,可以直接放在各个app的url文件,

而二级域名名称,则放在系统下配置文件里,每个二级域名,对应url文件路径,和url文件下的列表变量为一个组合存放

url 文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
from .Controllers import Account
from .Controllers import Home
 
patterns = [
     (r"/Login.html$", Account.LoginHandler),
     (r"/CheckCode.html$", Account.CheckCodeHandler),
     (r"/Register.html$", Account.RegisterHandler),
     (r"/Index.html$", Home.IndexHandler),
     (r"/Detail-(?P<product_id>\d+)-(?P<price_id>\d+).html$", Home.DetailHandler),
     (r"/Pay.html$", Home.PayHandler),
     (r"/", Home.IndexHandler),
]

config配置文件 

routes = (
    {
        'host_pattern': 'www.tornado.com',
        'route_path': 'UIWeb.Urls',
        'route_name': 'patterns'
    },
    {
        'host_pattern': 'admin.tornado.com',
        'route_path': 'UIAdmin.Urls',
        'route_name': 'patterns'},
    {
        'host_pattern': 'dealer.tornado.com',
        'route_path': 'UIDealer.Urls',
        'route_name': 'patterns'
    }
)

做好上面的路由分离后,最后一步就是定一个 url 的加载方法,在程序启动时,将这些 url 规则加载。

url 加载函数

def load_routes(app):
    for route in Config.routes:
        host_pattern = route['host_pattern']
        route_path = route['route_path']
        route_name = route['route_name']
 
        m = __import__(route_path, fromlist=True)
        pattern_list = getattr(m, route_name)
 
        app.add_handlers(host_pattern, pattern_list)

启动程序

application = tornado.web.Application([
    #(r"/index", home.IndexHandler),
], **settings)
 
load_routes(application)
 
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
https://www.cnblogs.com/yezigege/p/13447319.html#%E9%80%9A%E8%BF%87%E5%AE%9A%E5%88%B6%E4%BA%8C%E7%BA%A7%E5%9F%9F%E5%90%8D%E5%88%B6%E4%BD%9Cdjango%E5%BC%8F%E5%88%86%E5%B1%82%E8%B7%AF%E7%94%B1来源一 来源二
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DjangoTornado和Flask都是Python的Web框架。它们都提供了快速开发Web应用的工具和库,但它们具有不同的特点和适用场景。 Django是一个全功能的Web框架,有着成熟的架构和丰富的功能。它提供了大量的内置组件,如ORM(对象关系映射)、路由、模板引擎等,可以轻松构建中大型的Web应用。Django具有严格的约定优于配置的原则,对开发者提供了一种“带电池”的开发方使用Django可以快速地搭建一个完整的Web应用。 Tornado是一个高性能的Web框架,特别适用于处理高并发的场景。它采用非阻塞的I/O模型,可以有效地处理大量的并发连接。Tornado还内置了一个强大的异步网络库,可以方便地处理WebSocket、长轮询以及其他实时通信的需求。由于其高性能和异步特性,Tornado更适合实时性要求较高的Web应用,如聊天室、实时推送等。 Flask是一个轻量级的Web框架,它注重简洁、灵活和易拓展性。Flask提供了基本的功能,如URL路由、模板引擎等,但它不像Django那样内置大量的组件。开发者可以根据自己的需求,选择合适的扩展包来满足特定的功能需求。Flask适合构建小型应用、原型开发以及需要定制化开发的项目。 综上所述,根据项目的需求和规模,我们可以选择合适的Web框架。如果需要快速搭建、开发中大型应用,使用Django是一个不错的选择;如果需要处理高并发和实时性要求高的应用,可以选择Tornado;而如果需要灵活、可定制化的开发方,Flask可以是一个合适的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值