前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django 2.1.7 Celery 4.3.0 异步发送邮件示例

Django 2.1.7 Celery 4.3.0 异步发送邮件示例

作者头像
Devops海洋的渔夫
修改2019-09-20 15:59:24
1.2K0
修改2019-09-20 15:59:24
举报
文章被收录于专栏:Devops专栏Devops专栏

前面的篇章调用celery都是通过python3 manage.py shell的方式使用,而celery是作为一个单独的模块包的使用方式,并没有在django中使用,本篇章来看看Django中如何整体使用一下。

安装相关库

代码语言:javascript
复制
pip3 install -U Celery
pip3 install django-celery==3.3.0
pip3 install "celery[librabbitmq,redis,auth,msgpack]"

安装djcelery

在项目/settings.py中安装。

代码语言:javascript
复制
INSTALLED_APPS = (
  ...
  'djcelery',
}

celery_tasks包文件配置以及任务编写

创建celery_tasks的包文件,专门存放tasks.py任务脚本以及celery相关配置管理,文档结构如下:

celery.py

代码语言:javascript
复制
from celery import Celery
from celery_tasks import celeryconfig # 导入celery配置文件

import os
# 为celery设置环境变量
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

## 创建celery app
app = Celery('celery_tasks')

# 从单独的配置模块中加载配置
app.config_from_object(celeryconfig)

# 设置app自动加载任务
app.autodiscover_tasks(['celery_tasks'])

celeryconfig.py

代码语言:javascript
复制
# 设置结果存储
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/9'

# 设置代理人broker
BROKER_URL = 'redis://127.0.0.1:6379/8'

tasks.py

代码语言:javascript
复制
from celery_tasks.celery import app as celery_app # 导入创建好的celery应用
from django.core.mail import send_mail # 使用django内置函数发送邮件
from django.conf import settings  # 导入django的配置

@celery_app.task
def send_mail_task(title,email,msg):
     # 使用django内置函数发送邮件
    send_mail(title, '', settings.EMAIL_FROM,[email],html_message=msg)

编写视图使用celery任务

  • 在assetinfo/views.py文件中创建视图sayhello。
代码语言:javascript
复制
from celery_tasks.tasks import send_mail_task # 导入celery任务

def sayhello(request):
    # 测试发送邮件
    title = '访问百度'
    msg = '<a href="http://www.baidu.com/" target="_blank">访问百度</a>'
    email = '35******7@qq.com'
    send_mail_task.delay(title,email,msg) # 使用delay调用任务

    return HttpResponse("hello world")
  • 在assetinfo/urls.py中配置。
代码语言:javascript
复制
urlpatterns = [
    # ex:/assetinfo/sayhello
    path('sayhello', views.sayhello, name='sayhello'),
]

迁移生成celery数据表

python3 manage.py migrate

启动celery服务进行测试

  • 启动django服务 python3 manage.py runserver
  • 启动celery的worker celery -A celery_tasks worker -l info -P eventlet
  • 请求视图,然后查看celery执行任务的情况 访问http://127.0.0.1:8000/assetinfo/sayhello
  • celery执行任务如下:
  • 查看收到的邮件
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装相关库
  • 安装djcelery
  • celery_tasks包文件配置以及任务编写
    • celery.py
      • celeryconfig.py
        • tasks.py
        • 编写视图使用celery任务
        • 迁移生成celery数据表
        • 启动celery服务进行测试
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档