Django+Celery+Redis实现异步任务(发送邮件)
2018-08-17 20:24
911 查看
安装如下依赖库
pip install Celery pip install django-celery pip install django-redis
还要安装本地的Redis服务
settings.py 文件中添加如下代码(需要163邮箱开通SMTP服务)
import djcelery djcelery.setup_loader() BROKER_URL = 'redis://localhost:6379' CELERY_RESULT_BACKEND = 'redis://localhost:6379' EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.163.com' EMAIL_PORT = 25 EMAIL_HOST_USER = 'your mail@163.com' EMAIL_HOST_PASSWORD = 'your password' EMAIL_FROM = '<your mail@163.com>'
EMAIL_TO = 'send to@xxx.com'
INSTALLED_APPS = (
...
'djcelery'
)
与settings.py同级目录下的__init__.py添加如下代码
import celery from .celery import app as celery_app
在settings.py同级目录下创建celery.py,并添加如下代码
from __future__ import absolute_import import os from celery import Celery from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings') app = Celery('myshop') app.config_from_object('django.conf:settings') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
在你的app目录下创建tasks.py,并添加你需要执行的任务(在这里是发送邮件)
# coding: utf-8 from celery import task from django.core.mail import send_mail from .models import Order from myshop import settings @task() def send_email(): """ Task to send an e-mail notification when an order is successfully created. """ title = 'Django发送邮件' message = ('本邮件为程序所发,请忽视').decode('utf-8') mail_sent = send_mail(title, message, settings.EMAIL_FROM, [settings.EMAIL_TO]) return mail_sent
在你的view.py中调用,执行该任务
from .tasks import order_createddef order(request):
..... # launch asynchronous task send_email.delay(order.id)
.....
相关文章推荐
- 使用django + celery + redis 异步发送邮件
- Django 使用 Celery 实现异步任务
- 基于Django1.10与Celery4实现异步队列任务 推荐
- Python Django Celery 实现异步任务(二)使用rabbitmq 作为broker
- django发送邮件结合itsdangerous+celery+redis
- WINDOWS == Django Celery Redis 异步执行任务demo实例
- 基于Django与Celery实现异步队列任务
- Python Django Celery 实现异步任务
- Django Celery Redis 异步执行任务demo实例
- django+celery+redis实现运行定时任务
- django+celery+redis实现运行定时任务
- celery配合rabbitmq任务队列实现任务的异步调度执行[celery redis] 推荐
- django+celery+ RabbitMQ实现异步任务最完整教程
- django与celery实现异步队列任务
- Django基于celery的异步任务实现
- 使用 django+celery+RabbitMQ 实现异步执行
- Django中如何使用django-celery完成异步任务
- Django使用Celery异步任务队列的使用
- Django中使用Celery实现定时任务(用djcelery)
- Django配置celery执行异步任务和定时任务