celery发送邮件

安装celery

pip install celery

发送者端
from celery import Celery
from django.core.mail import send_mail

from dailyfresh import settings

"""
第一个参数为当前模块的名称,只有在 __main__ 模块中定义任务时才会生产名称。
第二个参数为中间人(Broker)的链接 URL ,Celery默认使用的也是RabbitMQ。使用 Redis 可以写为redis://localhost。
"""
app = Celery('celery_tasks.tasks', broker='redis://127.0.0.1:6379/8')

# 定义任务函数
@app.task
def send_activate_mail(to_email, username, token):
    """发送激活邮件"""
    # 发邮件
    subject = '天天生鲜用户激活'
    message = ''
    html_message = """
        <h1>{},欢迎您成为天天生鲜注册会员</h1>
        请点击下面链接激活您的账户<br/>
        <a href="http://127.0.0.1:8000/user/activate/{}">天天生鲜用户激活链接</a>
    """.format(username, token)
    sender = settings.EMAIL_FROM
    receiver = [to_email]
    send_mail(subject, message, sender, receiver, html_message=html_message)
中间人broker

Celery 需要一个中间件来进行接收和发送消息,通常以独立的服务形式出现,成为 消息中间人(Broker)

以下有几种选择:

  • RabbitMQ

RabbitMQ 的功能比较齐全、稳定、便于安装。在生产环境来说是首选的。

http://www.rabbitmq.com/download.html

  • Redis

Redis 功能比较全,但是如果突然停止运行或断电会造成数据丢失。

任务处理者端worker

使用 worker 参数进行执行我们刚刚创建职程 (Worker):

# 处理者启动任务
celery -A celery_tasks.tasks worker --loglevel=info

在处理者端也需要项目代码,并且添加以下两句

# 在任务处理者端添加
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dailyfresh.settings')
django.setup()
调用任务

需要调用我们创建的实例任务,可以通过 delay() 进行调用。

delay()apply_async() 的快捷方法,可以更好的控制任务的执行(详情:调用任务:Calling Tasks):

from celery_tasks import tasks
# celery调用任务发邮件
tasks.send_activate_mail.delay(email, username, token)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天意不可违.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值