django中celery分布式任务队列 简单使用

特点:简单,有文档帮助;高效,单个celery进程每分可处理数百万个任务;灵活,celery每个部分都可进行扩展


pip install celery   安装了Celery的机子就叫celery服务器


组成:任务队列是跨线程,跨机器工作的一种机制,有专门进程监听任务队列,从中获得新的任务并处理

客户端------》broker中间人------》worker服务器     celery系统可包含多个broker worker


1创建celery异步任务文件包

2创建应用对象/客户端

from celery import Celery

Celery()  参数1:异步任务在项目中的路径,参数2:指定的broker中间人

app = Celery('celery_tasks.tasks', broker='redis://192.***.***.***:6379/2')

app.task 装饰异步发送的任务 

 @app.task
  def send_active_email(to_email, user_name, token):
      """发送激活邮件"""

      subject = "死去活来用户激活"  # 标题
      body = ""  # 文本邮件体
      sender = settings.EMAIL_FROM  # 发件人
      receiver = [to_email]  # 接收人
      html_body = '<h1>尊敬的用户 %s, 感谢您注册!</h1>' \
                  '<br/><p>请点击此链接激活您的帐号<a href="http://127.0.0.1:8000/users/active/%s">' \
                  'http://127.0.0.1:8000/users/active/%s</a></p>' %(user_name, token, token)
      send_mail(subject, body, sender, receiver, html_message=html_body)

调用python中的send_mail来发送邮件

视图里需要使用delay()来触发调用异步任务,我理解为celery的标识不然不认识

        send_active_email.delay(email, user_name, token)


3创建worker

把项目拷贝的celery服务器所在的机子上

将以下代码拷贝到tasks。py文件顶部

import os 
os.environ["DJANGO_SETTINGS_MODULE"] = "项目名.settings"
# 放到Celery服务器上时添加的代码
import django
django.setup()

在服务器终端开启celery服务:

celery -A celery_tasks.tasks worker -l info


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值