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

2020年03月30日 17:44:15   [来源:互联网]   [阅读:-]
字体:【

说在前头

用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

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爱好者,点赞,关注,转发。我会持续更新我日常在项目用到的工具,分享给大家。

推荐阅读:云米热水器怎么样


相关新闻
新闻焦点
凡关乎美的东西,都离不开色彩。一直觉得,中国是个没有绚烂色彩的国家,能想起来的色彩,也都单调乏味,比如,宫墙红?也许是太熟悉了的缘故。反倒是很多[更多]
正所谓:一屋,两人,三餐,四季。最幸福的生活莫过于,平淡却温馨的日常生活。想要过上这种生活,取决于三餐离不开的餐厅。但是实际上你家的餐厅区域,餐[更多]
厨房虽小,却装着天下美食,在家里,不管是谁主厨,一个好的厨房绝对能让整个烹饪过程高效节能。空间动线//节省劳动时间//在做饭过程中,是不是总觉得[更多]
生活不止眼前的苟且,还有买房和家装,而家装的投入决定了之后生活居住的品质。相信大多数业主从拿到新家钥匙的那一刻起,脑海中对未来生活的完美憧憬和口[更多]
关于我们 | 联系我们 | 老版地图 | 网站地图 | 版权声明
版权所有:嘉兴都市网未经授权禁止复制或建立镜像
相关作品的原创性、文中陈述文字以及内容数据庞杂本站无法一一核实,如果您发现本网站上有侵犯您的合法权益的内容,请联系我们,本网站将立即予以删除!
中国互联网违法和不良信息举报中心 网络警察报警岗亭