CherryPy具有强大的体系结构,可帮助您以一种易于维护和更灵活的方式组织代码。
您可以使用几种机制,本教程将重点介绍三个主要机制:
- dispatchers
- tools
- plugins
为了理解它们,让我们想象你是一个超级市场:
- 你有几个收银台,人们在收银台前面排队(这就像是你的请求)
- 你有食物和其他东西的各个部分(这些是你的数据)
- 最后,你有超级市场人员和他们的日常任务,以确保部分始终有序(这是你的后端)
尽管非常简单,但这与您的应用程序的行为方式相差无几。 CherryPy可以帮助您以反映这些高级想法的方式构建应用程序。
Dispatchers
回到超市的例子,很可能你会想要根据不同情况执行操作:
- 购买少于十件篮子的收银台
- 为残疾人士提供服务的收银台
- 为孕妇准备一个收银台
- 有一个只能使用购物卡的收银台
为了支持这些用例,CherryPy提供了一种称为调度程序的机制。在请求处理期间尽早执行调度程序,以确定应用程序的哪一段代码将处理传入的请求。或者,继续商店类比,调度员将决定顾客到哪个收银台。
Tools
我们假设您的商店决定进行折扣狂欢活动,但仅限于特定类别的客户。 CherryPy将通过一种称为工具的机制来处理这种用例。
tools 是一段代码,它基于每个请求运行,以执行其他工作。通常,tools 是一个简单的Python函数,它在CherryPy请求过程中的给定点执行。
Plugins
正如我们所看到的,该商店有一群人致力于管理库存并处理任何客户的期望。
在CherryPy世界中,这转化为具有在任何请求生命周期之外运行的函数。这些函数应该处理后台任务,长期连接(例如对数据库的连接)等。
插件以这种方式调用,因为它们与CherryPy引擎一起工作并随着您的操作扩展它。