我知道各种框架都有它们的好处,但我个人希望我在python中的web开发尽可能直截了当:更少写入框架,更多编写python.
到目前为止,我发现的唯一让我以最明显的方式做到这一点的是web.py,但我对其性能略有担忧.
对于那些使用nginx(或其他风味)+ mod_wsgi + web.py ...的性能如何?可以进一步改进吗?
对于那些使用过web.py的人来说,喜欢这个主意并继续写更好的东西或者找到更好的东西......关心我的来源?
我想听听所有引人注目,极简但功能强大的方法.
nos*_*klo 37
要走的路是wsgi.
WSGI是Web服务器网关接口.它是Web服务器和应用程序服务器与Web应用程序通信的规范(尽管它也可以用于更多).它是一个Python标准,在PEP 333中有详细描述.
所有当前框架都支持wsgi.许多网络服务器也支持它(包括apache,通过mod_wsgi).如果你想编写自己的框架,那就是要走的路.
这是hello world,直接写入wsgi:
def application(environ, start_response):
status = '200 OK'
response_headers = [('Content-type','text/plain')]
start_response(status, response_headers)
return ['Hello world!\n']
Run Code Online (Sandbox Code Playgroud)
把它放在一个file.py
,将你的mod_wsgi
apache配置指向它,它将运行.纯蟒蛇.没有进口.只是一个python函数.
如果您真的在编写自己的框架,可以查看werkzeug.它不是一个框架,而是WSGI应用程序的各种实用程序的简单集合,并且已经成为最先进的WSGI实用程序模块之一.它包括一个功能强大的调试器,全功能请求和响应对象,处理实体标签的HTTP实用程序,缓存控制头,HTTP日期,cookie处理,文件上传,强大的URL路由系统和一堆社区贡献的插件模块.从你的手中取出无聊的部分.
bob*_*nce 18
令人讨厌的是,即使提出了一个问题,询问如何在没有框架的情况下编写,每个人仍然会积极地推广自己喜欢的框架.OP抱怨不想要一个"重量级框架",回复提到Twisted,所有的东西?!来吧,真的.
是的,这是完全有可能写出直WSGI应用程序,并从独立模块抓住的,而不是你的代码嵌入到世界的一个特定的框架的看法想要的功能位.
要采用这种方法,您通常需要熟悉HTTP和CGI的基础知识(因为WSGI从早期的规范中继承了很多).它不一定是向初学者推荐的方法,但它是非常可行的.
我想听听所有引人注目,极简但功能强大的方法
你不会听到他们的声音,因为没有人对促进"自己动手"作为一种方法有部落的兴趣.我,我使用一个特定的独立模板包,一个特定的独立表单阅读包,一个特定的数据访问层,以及一些家庭酿造实用程序模块.我不是在写一篇我可以改编的特定哲学,它们都是无聊的工具,可以换掉,换成别的东西一样好.
你也可以检查cherrypy.cherrypy的重点是成为一个允许你编写python的框架.Cherrypy有自己非常好的网络服务器,但它是wsgi兼容的,所以你可以通过mod_wsgi在apache中运行cherrypy应用程序.这是在cherrypy中的hello world:
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
Run Code Online (Sandbox Code Playgroud)
使用WSGI获得所有答案的+1.
Eric Florenzo最近撰写了一篇很棒的博客文章,您应该阅读:编写Blazing Fast,无限可扩展,Pure-WSGI实用程序.这将使您更好地了解Hello World之外的纯WSGI.还要注意评论,尤其是Kevin Dangoor的第一条评论,他建议至少将WebOb添加到您的工具集中.