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
xiaozizayang
V2EX  ›  Python

Sanic 源码阅读 - 基于 0.1.2

  •  
  •   xiaozizayang ·
    howie6879 · 2017-12-21 08:25:58 +08:00 · 3948 次点击
    这是一个创建于 2534 天前的主题,其中的信息可能已经有所发展或是发生改变。
    15 条回复    2018-01-09 09:27:19 +08:00
    mimzy
        1
    mimzy  
       2017-12-21 08:37:09 +08:00
    感谢分享 然后鸡蛋里挑个骨头 没有 Pythoner 这种说法 一般应该叫 Pythonista 或者 Pythoneer
    xiaozizayang
        2
    xiaozizayang  
    OP
       2017-12-21 08:49:31 +08:00
    @mimzy 非常感谢 已改
    lniwn
        3
    lniwn  
       2017-12-21 09:25:38 +08:00 via iPhone
    支持下,抽空看看楼主的笔记
    rogwan
        4
    rogwan  
       2017-12-21 10:29:41 +08:00 via Android
    支持!
    neoblackcap
        5
    neoblackcap  
       2017-12-21 11:32:17 +08:00
    这个不是 Sanic 源码阅读吧?这个我看就是一般的教程啊,都还是在外围绕着 API 转。还没有进去核心啊。给个建议,希望增加为什么 API 是这样设计,里面的实现跟 aiohttp,tornado 有什么差别等解析。
    xiaozizayang
        6
    xiaozizayang  
    OP
       2017-12-21 11:37:42 +08:00
    @neoblackcap 这是导读 核心部分如 server.py 每个函数我都写注释了 难道把注释解释放在文档里?
    neoblackcap
        7
    neoblackcap  
       2017-12-21 11:49:54 +08:00
    @xiaozizayang 根据一般源码解析的书,他们多是注释跟说明结合,你要有注释,同时要有说明这段代码如何被调用的说明。
    比如一个请求的生命周期是怎么样的,加一个流程图说明这样子就更好了,对你对其他人都好。
    增加跟其他框架的对比就可以知道这个框架的优势。到底是框架厉害,还是有水分呢?粗糙地使用 asyncio+uvloop 嫩股本你达到 benchmark 的水平呢。这些可能更有意义。
    毕竟在读者看来,我压根就不知道你的 on_函数什么时候被调用。比如 http://tengine.taobao.org/book/这样的结构就甚好了
    xiaozizayang
        8
    xiaozizayang  
    OP
       2017-12-21 11:54:46 +08:00
    你说得有道理 我也是说明和和注释相结合 我是这样写的 我把源码注释好了放在另外一个项目里 我在文章中列出框架的执行路线,每个路线的函数的作用,若想知道这个函数具体代码以及代码的具体解释,这里我就会把我注释好的代码地址放在旁边,读者可以一边看我写的注释,一边追踪框架的运行路线
    xiaozizayang
        9
    xiaozizayang  
    OP
       2017-12-21 11:55:35 +08:00
    ManjusakaL
        10
    ManjusakaL  
       2018-01-08 16:26:31 +08:00
    Sanic 现在看起来真的有点原地炸裂。。
    xiaozizayang
        11
    xiaozizayang  
    OP
       2018-01-08 19:22:21 +08:00 via Android
    @ManjusakaL 何出此言
    ManjusakaL
        12
    ManjusakaL  
       2018-01-08 20:25:13 +08:00
    @xiaozizayang
    之前写过一篇文章
    现在仔细看的话,第一不支持 ASGI/WSGI 想部署只能用它自己实现的 Gunicorn Worker,生产环境下经常玄学问题。
    第二,就是内部耦合严重,写插件做扩展真是伤心事
    第三,就还有一些细节的东西吧
    ManjusakaL
        13
    ManjusakaL  
       2018-01-08 20:25:29 +08:00
    xiaozizayang
        14
    xiaozizayang  
    OP
       2018-01-09 09:26:04 +08:00
    @ManjusakaL 1.我司有些服务将 flask 替换成 sanic 了 不过都是接口服务 感觉还可以 压测同等条件下 sanic 比 falsk 快 关于部署 docker 下直接裸跑 没毛病,2.我只针对 requets 以及 response 的请求前后做些处理 简单封装下就好 并没有需求对处理过程进行重新的需求,可能不理解你的感受,看你文章中的关于 json 的 pr,何不针对错误封装个 response_handle(),出错就替换成你的 json dumps,3.你说的装饰器的那个其他问题,我觉得那个没毛病,你编写的函数默认其实就是一个装饰器包裹起来的异步函数 sanic 只看返回的函数,这样我觉得还灵活点
    xiaozizayang
        15
    xiaozizayang  
    OP
       2018-01-09 09:27:19 +08:00
    @ManjusakaL 我用 sanic 比较早 不得不承认是有问题的 记得年中那段时间还有安全问题 等它慢慢完善吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5553 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:54 · PVG 16:54 · LAX 00:54 · JFK 03:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.