如何在不依赖框架的情况下使用python进行Web开发?

30 python performance web.py

我知道各种框架都有它们的好处,但我个人希望我在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_wsgiapache配置指向它,它将运行.纯蟒蛇.没有进口.只是一个python函数.

如果您真的在编写自己的框架,可以查看werkzeug.它不是一个框架,而是WSGI应用程序的各种实用程序的简单集合,并且已经成为最先进的WSGI实用程序模块之一.它包括一个功能强大的调试器,全功能请求和响应对象,处理实体标签的HTTP实用程序,缓存控制头,HTTP日期,cookie处理,文件上传,强大的URL路由系统和一堆社区贡献的插件模块.从你的手中取出无聊的部分.


bob*_*nce 18

令人讨厌的是,即使提出了一个问题,询问如何在没有框架的情况下编写,每个人仍然会积极地推广自己喜欢的框架.OP抱怨不想要一个"重量级框架",回复提到Twisted,所有的东西?!来吧,真的.

是的,这完全有可能写出直WSGI应用程序,并从独立模块抓住的,而不是你的代码嵌入到世界的一个特定的框架的看法想要的功能位.

要采用这种方法,您通常需要熟悉HTTP和CGI的基础知识(因为WSGI从早期的规范中继承了很多).它不一定是向初学者推荐的方法,但它是非常可行的.

我想听听所有引人注目,极简但功能强大的方法

你不会听到他们的声音,因为没有人对促进"自己动手"作为一种方法有部落的兴趣.我,我使用一个特定的独立模板包,一个特定的独立表单阅读包,一个特定的数据访问层,以及一些家庭酿造实用程序模块.我不是在写一篇我可以改编的特定哲学,它们都是无聊的工具,可以换掉,换成别的东西一样好.

  • "...模板包,......表格阅读包,......数据访问层"请注明.普遍性对我们其他人没有帮助. (2认同)

nos*_*klo 9

你也可以检查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)


Van*_*ale 8

使用WSGI获得所有答案的+1.

Eric Florenzo最近撰写了一篇很棒的博客文章,您应该阅读:编写Blazing Fast,无限可扩展,Pure-WSGI实用程序.这将使您更好地了解Hello World之外的纯WSGI.还要注意评论,尤其是Kevin Dangoor的第一条评论,他建议至少将WebOb添加到您的工具集中.