栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

celery发送邮件

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 = """
        {},欢迎您成为天天生鲜注册会员
        请点击下面链接激活您的账户
天天生鲜用户激活链接 """.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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/742130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号