学习WSGI框架pecan(一)Hello World

7 篇文章 1 订阅
5 篇文章 0 订阅

第一部分

安装

pip install pecan

实现Hello World

我们先All in One把代码放到一个文件里。
新建一个app.py文件,代码如下:

# /usr/bin/env python
# coding=utf-8

from wsgiref import simple_server
import pecan


class RootController(object):

    @pecan.expose()
    def index(self):
        return "Hello World"


app = pecan.Pecan(RootController())


if __name__ == "__main__":
    sev = simple_server.make_server("127.0.0.1", 5000, app)
    sev.serve_forever()

运行起来,浏览器里输入http://127.0.0.1:5000 查看效果
在这里插入图片描述
完美这就实现了!!!
解释一下代码

class RootController(object):

    @pecan.expose()
    def index(self):
        return "Hello World"

这定义了一个控制RootController,定义一个Pecan的app需要一个RootController。
这里的index方法名是不能改的,routing的时候会,查找有没有这个方法,而且必须使用装饰器 @pecan.expose()
注意!!!
有些小朋友,会把@pecan.expose**()**写成@pecan.expose,没有带括号。一运行起,界面上就该报:“A server error occurred. Please contact the administrator.”,控制台会打出“AttributeError: ‘instancemethod’ object has no attribute ‘_pecan’”。这就是没用到装饰器,一些属性没有加上。装饰器使用时带不带括号是有区别的。当然也可以写一个兼容的。我们会在最后放一个兼容的,防止一些粗心的小朋友,因为这苦恼。

app = pecan.Pecan(RootController())

这段就是生成一个Pecan的WSGI对象。第一个参数需要传递一个RootController对象,记住是一个object不是类。有的小朋友会写成app = pecan.Pecan(RootController),这样控制台又该报错了“TypeError: unbound method index() must be called with RootController instance as first argument (got nothing instead)

if __name__ == "__main__":
    sev = simple_server.make_server("127.0.0.1", 5000, app)
    sev.serve_forever()

这个使用python自带的模块wsgiref启动一个WSGI app,这个测试用,生产环境不要用。

一个带不带括号都行的expose

# /usr/bin/env python
# coding=utf-8
import pecan
from functools import wraps

def happy_expose(f=None, **kw):
    if f is None:
        def inner_expose(func):
            return happy_expose(func, **kw)
        return inner_expose
    else:
        @wraps(f)
        @pecan.expose(**kw)
        def _expose(*args, **kwargs):
            return f(*args, **kwargs)
        return _expose

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值