首页 > 其他分享 >29-Celery基本配置

29-Celery基本配置

时间:2023-03-28 18:45:11浏览次数:32  
标签:celery py app 配置 29 Celery 任务 import

# Celery 是一个基于python开发的异步任务队列/基于分布式消息传递的作业队列,通过它可以很轻松的实现任务的异步处理
# 官方网站:
    https://docs.jinkan.org/docs/celery/getting-started/first-steps-with-celery.html

一. celery的相关概念

celery架构图

# 1. task 就是任务,包括异步任务和定时任务

# 2. broker 中间人,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker。
   # Celery本身不提供队列服务,推荐用Redis或RabbitMQ实现队列服务

# 3. worker 执行任务的单元,它实时监控消息队列,如果有任务就获取任务并执行它

# 4. backend 用于存储任务的执行结果。Celery支持以不同方式存储任务的结果,
   # 包括AMQP, redis,memcached, mongodb,SQLAlchemy, Django ORM,Apache Cassandra, lronCache等 

# 5. beat 定时任务调度器,根据配置定时将任务发送给Broler。

二. 应用场景

# 异步调用: 那些用户不关心的但是又存在在我们API里面的操作 我们就可以用异步调用的方式来优化(发送邮件或者上传头像)

# 定时任务:定期去统计日志,数据备份,或者其他的统计任务

三. Celery的安装

# 1. 安装
    pip install celery==4.4.1
    pip install celery-with-redis==3.0
    pip install django-celery-results==1.2.0  #django-celery-results库基于 Django ORM实现了结果存储后端
    pip install django-celery==3.3.1
# 2. 配置settings.py
  #注册celery
    INSTALLED_APPS = [
         ...
        'celery',
        'django_celery_results'
    ]

  # celery配置
    BROKER_URL = 'redis://:[email protected]:6379/5' # @前面是redis密码,密码前必须加 : 
    # BROKER_URL = 'redis://localhost:6379/5' # 无密码
    CELERY_RESULT_BACKEND = 'django-db'
    CELERY_TASK_SERIALIZER = 'json'  # 任务序列化和反序列化使用json
    CELERY_RESULT_SERIALIZER = 'json'  # 结果序列化为json
# 3. 配置完后,进行数据库迁移(生成:django_celery_results_taskresult 表)
    python manage.py migrate
# 4. 在settings.py同级目录下新建celery.py : 创建celery实例
    from __future__ import absolute_import  # 绝对路径导入
    from celery import Celery
    from django.conf import settings
    import os

    # 设置工程配置文件
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'new.settings')  # new.settings: 主应用名.settings

    # 实例化celery对象
    # 第一个参数是应用名称,必须给
    app = Celery('mycelery')

    # 设置时区
    app.conf.timezone = 'Asia/Shanghai'

    # 读取配置文件
    app.config_from_object('django.conf:settings')

    # 自动发现任务
    app.autodiscover_tasks()  # 需要在app目录下,新建一个叫tasks.py(一点不要写错)文件
# 5. 在settings.py同级目录下的__init__.py加入
    from __future__ import absolute_import
    from .celery import app as celery_app # 重命名
# 6. 在app目录下,新建一个叫tasks.py(一点不要写错)文件

四. Celery 的使用

# 1. 创建任务 : 在需要使用异步任务的APP目录下新建tasks.py
    from celery.signals import task_success
    from celery import shared_task
    # 任务: 可执行的函数 / 类
    # 使用装饰器装饰起来的就是任务
    @shared_task
    def hello_world(n):
        for i in range(n):
            print("Hello World")
# 2. 创建路径urls.py
      # celery 测试
      path('task/', views.exec_task, name="task"),
# 3. 视图函数执行任务
    def exec_task(request):
        from App02.tasks import hello_world
        # 把任务添加到任务队列
        hello_world.delay(4)  # 任务函数名.delay(参数)
        return HttpResponse("celery")
# 4. 执行数据库迁移指令(生成数据库表)-忽略,之前已生成
      python manage.py migrate django_celery_results
# 5. 启动worker(异步任务)
    # 方案一: 使用--pool参数
      celery -A 主应用名(new) worker -l info --pool=solo
    
    # 方案二: 指定 gevent
      pip install gevent
      celery -A app_name worker -l info -P gevent

    # 方案三: 指定 eventlet
      pip install eventlet
      celery -A app_name worker -l info -P eventlet  -c 10

标签:celery,py,app,配置,29,Celery,任务,import
From: https://www.cnblogs.com/kh-1314/p/17265294.html

相关文章

  • 19-springboot自动配置原理
    SpringBoot自动配置原理(SpringBoot自动装配原理,SpringBootstarter原理)SpringBoot可以根据定义在classpath下的类,自动的给你生成一些Bean,并加载到Spring的Context中,自动配......
  • O2OA基于nginx的SSL跳转、转发配置---靳宇灵
    1.申请ssl证书,可参考 系统安全-启用HTTPS(腾讯云版) ,如需其他产商的证书可网络上搜索一下,这里不做过多赘述;2.确认服务器上已安装nginx,并可以正常访问。3.新建一个目录(这......
  • idea为啥每次打开新工程都要重新设置一遍maven配置项,没招了吗?
    背景:每次使用idea打开新的工程,都需要重新设置一遍maven的配置,次次都这样烦死了,就没有一个简便的方法吗?回答:答案是:必须有啊~解题步骤:1.原来的设置方法:File->Settings-......
  • 32、K8S-配置管理之Configmap
    1、基础知识1.1、场景需求生产中所有的应用程序中,都涉及到配置文件,而配置文件经常会有变更,比如数据库连接、代码版本号等.最典型场景就是:项目经历开发环境、测试环境......
  • [ABC294F] Sugar Water 2
    题面翻译高橋君有\(N\)瓶糖水,青木君有\(M\)瓶糖水。高橋君的第\(i\)瓶糖水有\(A_i\)份糖\(B_i\)份水。青木君的第\(i\)瓶糖水有\(C_i\)份糖\(D_i\)份水......
  • jenkins配置多版本的Nodejs
      linux安装nodejs,参考网址:https://www.cnblogs.com/xuejie/p/17264906.html(2)解压安装tarxvzfnode-v11.14.0-linux-x64.tar.gz-C/opt(3)修改环境变量vim/etc/p......
  • Java安装及配置
    一、环境准备jdk下载下载官网:JavaDownloads|Oracle下载版本:jdk-8u321-windows-x64.exe进入上述网址后,选择Java8,然后根据自己系统位数选择对应安装包即可二、jdk安......
  • 【Visual Leak Detector】配置项 ReportEncoding
    说明使用VLD内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍VLD配置文件中配置项ReportEncoding的使用方法。同系列文章目录可见《内存泄漏检测工具》目录......
  • Python & Anaconda 基础安装及配置
    原文链接:http://t.csdn.cn/nzH5w说明使用系统:Windows11本文暂时只包含最基础的PyCharm&Anaconda安装及环境配置,供自己记录使用,更为具体的配置方法请参考原文一、......
  • 【Visual Leak Detector】配置项 MaxTraceFrames
    说明使用VLD内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍VLD配置文件中配置项MaxTraceFrames的使用方法。同系列文章目录可见《内存泄漏检测工具》目录目......