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