您所在的位置: > 主页 > 秀尚街 > 资讯 > 正文
Python 异步任务神器 Celery 结合Flask使用!来源: 日期:2020-11-20 05:22:52  阅读:-

    说在前头

    用Python搞后台开发的,应该都知道celery的重要性。废话不多说,搞起。

    安装

    使用pip来安装,环境python3+

    Flask-Celery-Helper==1.1.0
    celery==4.1.0
    redis==3.0.1

    准备工作

    目录结构
    app
    |-__init__.py
    |-tasks.py
    config.py
    celery_runner.py

    celery_runner.py

    Python 异步任务神器 Celery 结合Flask使用

    tasks.py

    def task_demo():
    print("执行到我了")

    __init__.py

    from flask_celery import Celery 

    def create_app(config_name):
    app = Flask(__name__)
    db.app = app
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    celery.init_app(app) # 后台任务

    config.py

    import os

    basedir = os.path.abspath(os.path.dirname(__file__))

    class Config:
    JSON_AS_ASCII = False
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    CELERY_BROKER_URL = 'redis://:密码@127.0.0.1:6379/11' #使用redis
    CELERY_RESULT_BACKEND = 'redis://:密码@127.0.0.1:6379/11'#使用redis

    @staticmethod
    def init_app(app):
    pass

    class DevelopmentConfig(Config):
    DEBUG = True

    class TestingConfig(Config):
    TESTING = True

    class ProductionConfig(Config):
    DEBUG = False

    config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
    }

    使用

    在根目录下开启celery服务

    celery worker -c 2 -A celery_runner --loglevel=info

    具体参数,独自去网上找。

    调用:

    task_demo.apply_async()

    使用场景

    1.就比如发邮箱这个例子吧。用户点击发邮箱后,后台异步去执行,而不是阻塞等到发完成功后才提示用户说邮箱发送成功。而是马上去异步执行发布邮箱,提示用户去查看邮箱。

    2.导出大量订单。你可以后台去执行,并生成excel放在后台,之后提供给客户下载即可。又或者可以用长连接操作提示用户。

    。。。

    场景很多。我就不一一说明了。

    说在最后

    假如有帮助到你,或者你也是python爱好者,点赞,关注,转发。我会持续更新我日常在项目用到的工具,分享给大家。

    (正文已结束)

    免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!