哪个python Web框架有无障碍的开发和部署?

时间:2011-09-23 06:31:37

标签: python cherrypy flask

我在BaseHTTPServer中编写了一个Web API。它仅用于localhost。它在GET / POST操作上返回JSON对象。

http://localhost:8888/operation?param

和代码就像

def do_GET(self):
   if self.path=="operation":
       self.wfile.write("output")

但我担心保持活跃机制(阅读:可以重生工作人员的网络服务器),缺乏多线程和PITA-ful维护。


就像我说的那样,我正在考虑选择此Web框架的开发部署问题。

开发

Web界面目前有250行,功能非常简单。我正在寻找适合清洁维护和部署的东西。我不希望框架的MVC,ORM,模板和其他功能弄乱我的学习曲线。重定向到适当模块的UrL模式很不错。

部署

它应该在具有WSGI模块的成熟服务器上进行部署,并且最小化。这样的设置有热部署(为了更好的词),安装新的应用程序或更新代码意味着将文件复制到文件系统中的www-root。


CherryPy和Flask似乎很有趣。 Django和Web2Py似乎太全面了。

3 个答案:

答案 0 :(得分:6)

部署 wsgi 的推荐方法是作为长时间运行进程,嵌入式或daeomonized,而不是cgi脚本。无论哪种方式,它只是像上传文件一样有点不同,通过触摸配置文件重新启动服务器/进程通常是你使用wsgi最接近“热部署”。

毋庸置疑,如果符合wsgi,框架本身不会施加任何类型的部署限制。根据您的需要选择:apache + modwsgi,gunicorn,cherry.py,paste。他们都没有提供“热部署”(afaik),你仍然需要创建一个wsgi脚本并重新加载进程。文件系统布局通常无关紧要,这很好。您通常也不会获得自动加载。我知道werkzeug和cherry.py,并且werkzeug也提供了一些非常酷的调试工具。请注意,tornado / werkzeug *本身提供了自动重载选项,但实际上是考虑用于开发而不是部署,而not compatible用于wsgi模块。

但无论部署多么痛苦或无痛,建议使用像Fabric这样的东西来自动部署,而设置wsgi Web服务器并不困难。

框架本身的选择有点棘手,取决于你想要在什么级别工作.Tornado,werkzeug是流行的低级框架,(但也包括更高级别的工具,很多是框架+ webserver),但是你也可以直接使用webob,只需插入你需要的任何东西。

你有像flask或瓶子这样的微框架,然后是轻量级框架,比如web2.py,或者可能是金字塔(框架有多么模糊的线条)。

然后你有“全栈”django,grok,turbogears等...... 然后你有zope,这已经节食但仍然非常沉重。

请注意,您几乎可以对所有这些做任何事情(只取决于您想要弯曲多少),在许多情况下,您可以轻松地交换组件。我开始试用像瓶子或者烧瓶这样的微框架(你不必使用ORM或模板,但是一旦你这么做就很容易获得),而且看看 webob

*评论:将werkzeug添加到非真正的自动加载阵营。

答案 1 :(得分:0)

对于您所描述的内容,我会使用:Tornado Web Server

这是你好世界:

import tornado.ioloop
import tornado.web

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

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

它具有高度可扩展性,我认为使用您的代码设置它可能需要10分钟。

答案 2 :(得分:0)

我个人喜欢并且一直使用web.py.它非常轻量级,可定制并符合WSGI标准。

http://webpy.org