哪种轻量级Pythonweb框架支持应用和热部署代码

1 投票
4 回答
766 浏览
提问于 2025-04-17 02:55

我习惯了PHP的应用方式。例如,

c:\xampp\htdocs\app1
c:\xampp\htdocs\app2

可以通过以下方式访问

localhost://app1/page.php
localhost://app2/page.php

需要注意的几点:

  1. 放在www-root目录里的文件夹会直接对应到网址
  2. 当添加、删除或更改文件/文件夹时,工作进程会自动反映这些变化(新文件会立即生效)。

我在寻找一个成熟的Python网页框架。这个框架是用来做一个网页API的,之后会部署给多个客户,每个客户的版本都会有不同的定制。而且我们的工作流程中,和客户之间会频繁互动和修改。因此,“拖放式”的部署方式是必须的。

哪个Python框架可以实现这个?我更倾向于一个轻量级的解决方案(不想强制使用MVC、ORM等)。


相关链接

如何构建能够在Python中热替换代码的Twisted服务器?

Python网页托管:为什么需要重启服务器?

fastcgi、cherrypy和Python

4 个回答

1

CherryPy 是一个成熟的网页框架,当你做了修改后,它会自动重新部署。虽然它没有严格的文件结构和网址规则,但它是一个轻量级的框架,不强制使用 ORM(对象关系映射)、MVC(模型-视图-控制器)或者模板引擎。

2

我知道的Python没有现成的网络框架可以直接做到这一点,不过如果你需要的话,其实加上去也不难,只要稍微遵循一下“约定优于配置”的原则。

你可以先选择一个你喜欢的Python网络框架,然后写一个包装器,去遍历一个文件夹或一组文件夹,自动注册里面模块的路由。让你的模块在它们的__init__.py文件里也做同样的事情,去处理和它们在一起的其他文件。接着,只需设置你的WSGI代码,使其在WSGI脚本更新时自动重载,这样在开发过程中,你的部署就变成了两个简单的步骤——添加文件,然后触碰一下dev_app.wsgi。你甚至可以给这个包装器添加一个“真实”的部署选项,让它遍历一个设置好的开发环境,生成固定的URL到功能的映射,方便部署。

不过,做这些工作其实并不是特别必要。Python和PHP不一样,两者的开发方式并不完全相同。如果客户想要可变的路由,就用动态路由,并给他们(或者你自己)一个管理界面来控制内容和URL的映射。可以用平面文件、SQLite、NoSQL数据库,或者其他方式来存储这些映射和内容。使用像Jinja2、Mako、Cheetah或Genshi这样的模板引擎来维护你的整体布局。把这些都用面向对象的结构包起来,这样扩展起来会更简单(如果你觉得函数式编程更顺手,也可以用那个)。或者,直接放弃生产环境中的动态部分,生成像Jekyll那样的静态HTML文件。

4

我知道的成熟的Python框架没有一个可以直接把网址映射到Python模块上,老实说,这样做是有原因的。虽然你可以用CGI来实现这个功能,但这绝对不是推荐的Python应用部署方式。抛开这个要求不谈,flaskbottle都是轻量级的微型网页框架,它们的做法很相似,都能在检测到变化时自动重载(这在开发过程中使用是明智的)。

撰写回答