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


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

安装相关库

pip3 install -U Celery
pip3 install django-celery==3.3.0
pip3 install "celery[librabbitmq,Redis,auth,msgpack]"

安装djcelery

项目/settings.py中安装。

INSTALLED_APPS = (
...
'djcelery',
}

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

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

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

celery.py

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

# 设置结果存储
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/9'

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

tasks.py

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。
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*****@qq.com'
send_mail_task.delay(title,email,msg) # 使用delay调用任务

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

迁移生成celery数据表

python3 manage.py migrate

启动celery服务进行测试

  • 启动django服务python3 manage.py runserver

  • 启动celery的workercelery -A celery_tasks worker -l info -P eventlet

  • 请求视图,然后查看celery执行任务的情况 访问http://127.0.0.1:8000/assetinfo/sayhello

  • celery执行任务如下:

11. Django 2.1.7 Celery 4.3.0 异步发送邮件示例
  • 查看收到的邮件
11. Django 2.1.7 Celery 4.3.0 异步发送邮件示例


原文始发于微信公众号(海洋的渔夫):11. Django 2.1.7 Celery 4.3.0 异步发送邮件示例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/35198.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!