django中celery简单使用的一种方法

2 篇文章 0 订阅
2 篇文章 0 订阅
" http://www.celeryproject.org/ "  官网英文版本

" http://docs.jinkan.org/docs/celery/"  官方中文版本

celery 介绍:
Celery组成结构
任务队列是一种跨线程、跨机器工作的一种机制
任务队列中包含任务的工作单元。有专门的工作进程持续不断的监视任务队列,并从中获得新的任务并处理
Celery通过消息进行通信,通常使用一个叫broker(中间人)来协client(任务的发出者)和worker(任务的处理者)
client发出消息到队列中,broker将队列中的信息派发给worker来处理
一个Celery系统可以包含很多的worker和broker,可增强横向扩展性和高可用性能。
Celery组成结构是生产者消费者模型的一种体现


pip install celery ==3.1.25   # 版本号可不加

pip install celery-with-redis ==3.0
pip install django-celery==3.1.17


==>django 安装 djcelery
1.配置settings.py : 
INSTALLED_APPS = (
 ...
 'djcelery',
}
...
    # 末尾初始化
import djcelery
djcelery.setup_loader()
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_IMPORTS = ('应用名称.task')




2. 在django根模块中新建一个包或者在任何一个模块中创建一个py文件定义耗时的任务(这里以包为例)

import time

from celery import task


@task    # 装饰器定义为异步方法
def send_active_email(param_1,param_2,param_3):
      print('hello ...')
       time.sleep(2)

       print('world ...')


2.5 在调用的时候
# 导入异步方法
from celery_tasks.tasks_liuqi import send_active_email
# 需要执行异步方法的时候

         send_active_email.delay(email, user_name, token)

3."重要" ==> python manage.py migrate  "迁移"
4. sudo redis-server /etc/redis/redis.conf ==> 启动redis
5. 启动worker ==> python manage.py celery worker --loglevel=info

6. 启动django ==> python manager.py runserver




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DjangoCelery是一个基于Python的分布式任务队列,它可以用来异步执行耗时的任务,例如发送邮件、生成PDF等等。Celery需要配合一种消息间件来使用,而Redis是一种流行的消息间件,可以与Celery配合使用。 在Django使用Celery和Redis可以按照以下步骤进行: 1. 安装Celery和Redis ``` pip install celery redis ``` 2. 在Django项目配置CeleryDjango项目的settings.py文件添加如下配置: ``` # 配置Celery CELERY_BROKER_URL = 'redis://localhost:6379/0' # 指定redis作为消息间件 CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' # 指定redis作为结果存储 # 加载Celery配置 CELERY_TIMEZONE = 'Asia/Shanghai' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' ``` 3. 在Django项目创建Celery任务 在Django项目的某个app,可以创建一个tasks.py文件,定义Celery任务: ``` from celery import shared_task @shared_task def add(x, y): return x + y ``` 4. 启动Celery worker 在命令行,进入Django项目的根目录,启动Celery worker: ``` celery -A project_name worker --loglevel=info ``` 其,project_name是Django项目的名称。 5. 调用Celery任务 在Django项目,可以通过如下方式调用Celery任务: ``` from .tasks import add result = add.delay(2, 3) ``` 上述代码会异步执行add任务,返回一个AsyncResult对象,可以通过该对象获取任务执行结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值