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

请教下各位用 tornado 框架的开发,耗时任务直接扔协程里面去做就行了还是用 Celery 处理呢?

  •  
  •   tihiro · 2019-03-12 15:22:55 +08:00 · 1927 次点击
    这是一个创建于 1871 天前的主题,其中的信息可能已经有所发展或是发生改变。
    7 条回复    2019-03-17 20:14:48 +08:00
    shallyy
        1
    shallyy  
       2019-03-12 15:51:46 +08:00
    后者
    neoblackcap
        2
    neoblackcap  
       2019-03-12 15:56:08 +08:00
    耗时任务分两种,CPU 密集型,IO 密集型。你网络请求放在 Handler 里面做没问题,记得用 Tornado 自带的 Http Client。

    Tornado 是一个高性能网络框架,不过究其根本其实还是封装了事件循环,因此你要运用非堵塞 IO 处理才能算是正确发挥它的功效。任何堵塞操作(包括在主线程读写数据库,读写文件,CPU 密集型操作)都会带来悲剧
    tihiro
        3
    tihiro  
    OP
       2019-03-12 15:56:16 +08:00
    谢谢你的回答,但是我想知道为什么,利弊有哪些呢?
    a852695
        4
    a852695  
       2019-03-12 17:50:19 +08:00
    还是看你任务类型吧,celery 效率比较低
    cs8814336
        5
    cs8814336  
       2019-03-13 09:00:13 +08:00
    我理解你的协程是 tornado 进程里面的程序的协程吧. 这个问题当然是你能多进程多协程比多进程或者多线程号,所以能协程你就扔协程, 但是你说用 celery 其实还是一个队列解耦的一个好东西 . 要我选就选解耦微服务, 否则后面扩展很难
    cs8814336
        6
    cs8814336  
       2019-03-13 09:01:22 +08:00   ❤️ 1
    celery 也可以用协程 gevent 的, 所以其实你这 2 个感觉不能这么比着选
    zhze93
        7
    zhze93  
       2019-03-17 20:14:48 +08:00
    我之前做的时候,直接放在 celery 里做的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3230 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:55 · PVG 21:55 · LAX 06:55 · JFK 09:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.