标签:work 问题 inf 启动 ali 版本 pack mes ima
这样的情况下,假定Django网站发送邮件到smtp耗时是5s,那么用户在表单中输入信息之后提交,页面需要刷新5s才会跳转。显然,这是我们非常不愿意看见的情况,极大的影响了用户体验。
1 # 使用celery 2 import time 3 from celery import Celery 4 from django.conf import settings 5 from django.core.mail import send_mail 6 7 # 在任务处理者一端加这几句,如果使用的不是同一台电脑,django环境的初始化,一般启动项目的一端不需要加 8 import os 9 import django 10 os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘dailyfresh.settings‘) 11 django.setup() 12 13 # 创建一个Celery类的实例对象 14 app = Celery(‘celery_tasks.tasks‘, broker=‘redis://127.0.0.1:6379/9‘) 15 16 # 定义任务函数 17 @app.task() 18 def send_register_active_mail(to_mail, username, token): 19 """发送激活邮件""" 20 # 组织邮件信息 21 subject = ‘天天生鲜欢迎信息‘ 22 message = ‘‘ 23 sender = settings.EMAIL_FROM 24 receiver = [to_mail,] 25 html_message = ‘<h1>{},欢迎您成为天天生鲜注册会员</h1>请点击下面链接激活您的用户<br><a href="http:127.0.0.1:8000/user/active/{}">http:127.0.0.1:8000/user/active/{}</a>‘.format( 26 username, token, token) 27 send_mail(subject, message, sender, receiver, html_message=html_message) 28 # 利用time模块模拟发了五秒钟邮件,原方法会页面加载5秒 29 time.sleep(5)
1 # 导入上述创建的tasks.py文件中的异步发送邮件的方法 2 from celery_tasks.tasks import send_register_active_mail 3 4 # 发邮件 5 # subject = ‘天天生鲜欢迎信息‘ 6 # message = ‘‘ 7 # sender = settings.EMAIL_FROM 8 # receiver = [email] 9 # html_message = ‘<h1>{},欢迎您成为天天生鲜注册会员</h1>请点击下面链接激活您的用户<br><a href="http:127.0.0.1:8000/user/active/{}">http:127.0.0.1:8000/user/active/{}</a>‘.format(username, token, token) 10 # send_mail(subject, message, sender, receiver, html_message=html_message) 11 # 上面注释掉了原先发送邮件的代码,现在用刚导入的函数所替代 12 send_register_active_mail.delay(email, username, token)
celery -A celery_tasks.tasks worker -l info -P eventlet
最下面两行就是先接收到了发送邮件的请求,然后又执行发送的过程
标签:work 问题 inf 启动 ali 版本 pack mes ima
原文地址:https://www.cnblogs.com/springionic/p/10959353.html