celery以及异步发送邮件

Celery

任务发出者------》任务队列(中间人broker,用redis)-----》任务处理者(worker)
发出者发出任务,加入到任务队列(代码相当于发出者)
任务处理者监听任务队列

处理者也需要指定任务代码,不在同一台电脑需要拷贝

异步以及发送短信

​ 1.setting中配置

# 配置邮件发送
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'  # 如果为163邮箱,设置为smtp.163.com
EMAIL_PORT = 25  # 或者 465/587是设置了 SSL 加密方式
# 发送邮件的邮箱
EMAIL_HOST_USER = '1508426536@qq.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = '********'  # 第三方登陆使用的授权密码
EMAIL_USE_TLS = True  # 这里必须是 True,否则发送不成功
# 收件人看到的发件人, 必须是一直且有效的
EMAIL_FROM = '海上明月<11111@qq.com>'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

2.建立一个比如自己建立了一个task.py文件

from celery import Celery
from django.core.mail import send_mail
from tepro.settings import EMAIL_FROM
import redis
r = redis.Redis(host='localhost', port=6379,db=6)

# 加到处理者
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE","tepro.settings")
django.setup()

# 创建一个Celery类的实例对象 #第一个参数随便写,一般写路径  #第二个写redis路径
app = Celery('task',broker='redis://127.0.0.1:6379/9')

# 定义任务函数

@app.task
def send():
    subject = '主题'  # 主题
    message = ''
    from_email = EMAIL_FROM
    recipient_list = ['1508426536@qq.com']
    html_message = '<h3>{}, huiyuan:</h3>'
                     # 带标签的消息 html消息
    send_mail(subject=subject,
              message=message,
              from_email=from_email,
              recipient_list=recipient_list,
              html_message=html_message
              )

3.建立另一个,把任务加入到队列

from celery import Celery
from task import send
# 用delay发出任务放入队列,有参数也放在delay
send.delay()
# 启动处理者
celery -A 路径 worker
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值