15 Django之Celery发送邮件

异步任务--celery发送邮件

安装两个python包:

         pip install celery==3.1.25

         pip install django-celery==3.2.1

    pip install celery-with-redis==3.0

在你的应用下面创建名为task.py,用于封装耗时任务

 #settings中配置邮箱

 1 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
 2 EMAIL_USE_TLS = False
 3 EMAIL_HOST = 'smtp.163.com'
 4 EMAIL_PORT = 25
 5 EMAIL_HOST_USER = 'xxxxx@163.com'
 6 EMAIL_HOST_PASSWORD = 'xxxxx'
 7 EMAIL_FROM = 'xxxxx@163.com'
 8  
 9  
10  
11 import djcelery
12  
13 djcelery.setup_loader()
1 # 配置redis            :密码@ip:端口/指定数据库
2 BROKER_URL = 'redis://:pzl123456@47.106.37.80:6379/0'
3 CELERT_IMPORTS = ('users.task')

python manage.py migrate

生成celery需要的表

将名为celery.py文件加入到同工程目录同名的目录下,代码如下:

 1 from __future__ import absolute_import
 2  
 3 import os
 4 from celery import Celery
 5 from django.conf import settings
 6  
 7  
 8 app = Celery('portal')
 9  
10 app.config_from_object('django.conf:settings')
11 app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
12  
13  
14 @app.task(bind=True)
15 def debug_task(self):
16     print('Request: {0!r}'.format(self.request))

修改与工程目录同目录下的__init__.py文件

from newblog.celery import app as celery_app

把发送邮件的函数写到task.py文件中

 

用装饰器装饰这个函数

已启动redis 

然后启动worker   

linux下: 切换到项目下  python manage.py celery worker --loglevel=info

linux要用  nohup执行这个worker工人

在视图函数中调用

 

最后注册发送邮件调用

工人控制台显示

 

 

 

原文地址:https://www.cnblogs.com/a2534786642/p/11162657.html