V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
aljun
V2EX  ›  Python

写了个 API server/web framework,第一个上传 pypi 的项目,求围观 (≧∇≦)ノ

  •  
  •   aljun · 2016-06-03 21:05:25 +08:00 · 3337 次点击
    这是一个创建于 3099 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是楼主的第一个上交到 pypi 的项目,项目名字叫 Jolla 是一个基于 gevent 的高性能 API server

    这里是 gevent 所有的特性(来自 gevent 的文档):

    • 基于 libev 的高速的 event loop(epoll on Linux,kqueue on freeBSD)
    • 轻量执行的 greenlet
    • 还能更好的使用 Python 标准库的 API (被 gevent 猴子补丁后)
    • Cooperative sockets with SSL support.
    • DNS queries performed through threadpool or c-ares.
    • Monkey patching utility to get 3rd party modules to become cooperative.

    以上这些特性,都被 Jolla 继承了

    Jolla 也拥有以下独特的特性

    • 自己的精简好用的路有系统
    • 简单快速的 json response
    • 简单而且简短的项目结构
    • 自己的错误处理方式

    当我在写 Jolla 时,想写的是一个高性能的 API server ,它能让使用者以简短而简短的规则去完成 server 的工作,能让他们把她们的计算过程也好运算也好,快速的发到浏览器或移动端,所以我把 Jolla 写的尽可能简单。

    项目地址在这 http://salamer.github.io/jolla/

    项目文档教程在这 http://jolla.readthedocs.io/zh/latest/

    如果有什么不对的,或是错误的地方,欢迎指点,如果觉得好,可以 star 一下,谢谢啦~

    安装是:

    pip install jolla
    

    使用绝对简单:

    from jolla import WebApp,jolla_server,render
    
    def index(request):
        return render('index.html')
    
    class app(WebApp):
        urls=[
            (r'/',index)
        ]
    
    if __name__=="__main__":
        server=jolla_server(app)
        server.run_server()
    

    之前发过一次 v 站了,因为最近有更新了一下,还更了下文档,就有点浮夸了。。。。。

    github 地址: https://github.com/salamer/jolla

    如果喜欢的话可以帮忙点个 star= =+

    (暂时只支持 Python2.7 )

    7 条回复    2016-06-04 21:27:55 +08:00
    aljun
        1
    aljun  
    OP
       2016-06-03 21:40:09 +08:00 via iPhone
    啊⋯⋯没人鸟我咩⋯⋯
    hujianxin
        2
    hujianxin  
       2016-06-03 21:49:42 +08:00 via iPad
    路由类似 Django 的样子啊,不知道组织大工程方便吗。我更喜欢装饰器,嘿嘿,不过这个框架很简洁漂亮。
    aljun
        3
    aljun  
    OP
       2016-06-03 21:59:06 +08:00 via iPad
    @hujianxin 之前是想做装饰器(其实写出来了)但是后来综合考虑,放弃了装饰器、、
    fcicq
        4
    fcicq  
       2016-06-03 23:30:10 +08:00
    纯属自娱自乐. 特性在实现上没有难度没有特异性, 项目的 feature 都来自 gevent 就说明了这一点. 简单可能也只是相对于某些框架少写了那么两三行. 楼主能做点只有更少数人才能做到的事情吗?
    aljun
        5
    aljun  
    OP
       2016-06-03 23:37:32 +08:00 via iPad
    @fcicq 第一个项目吧。。。算个开始。。慢慢的大胆去做前人未尝试的项目
    reorx
        6
    reorx  
       2016-06-04 19:19:33 +08:00
    挺好的, lz 加油。

    不过目前主流的做法是 web 框架只实现 web 层,也就是路由、中间件等工具的集合,运行时跑在某种 server 程序上,比如 gevent, tornado,twisted, uwsgi, etc. 这样非常灵活,底层可根据不同情况来选择。 lz 这个项目和 gevent 耦合太深,运用就显得有些单一了。可以考虑尝试把 app 的东西拆出来,最后生成一个 WSGI 的 application 就可以了。

    另外看代码里 url 参数的支持是靠 `<param>` 这样的写法吗,感觉还是直接支持正则比较好。
    aljun
        7
    aljun  
    OP
       2016-06-04 21:27:55 +08:00 via iPad
    那个会转化为正则,为了简单
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1138 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:49 · PVG 02:49 · LAX 10:49 · JFK 13:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.