1. 异步发送邮件
# settings.py配置邮件(详情关注邮件配置)
# tasks.py中创建任务
from django.core.mail import send_mail
from new.settings import EMAIL_FROM
@shared_task
def mail_send(mail):
# send_mail(subject标题, message内容, from_email发件人, recipient_list收件人,)
send_mail(**mail, from_email=EMAIL_FROM)
# urls.py
path('task/', views.exec_task, name="task")
def exec_task(request):
from App02.tasks import mail_send
mail_send.delay({
"subject": "标题",
'message': "内容",
'recipient_list': ['123@qq.com']
})
return HttpResponse("celery")
# 启动worker
celery -A new worker -l info --pool=solo
2. 获取异步任务的结果
# tasks.py中创建函数获取结果
@shared_task
def sum_even(n):
result = 0
for i in range(0, n + 1, 2):
result += i
return result
# 获取异步任务的结果
from celery.signals import task_success
@task_success.connect(sender=sum_even) # sender=函数: 谁发送的信号
def complete(sender=None, result=None, **kwargs): # 函数固定写法
print(result) # result 获取异步任务执行的结果
# views.py
def exec_task(request):
from App02.tasks import sum_even
# 异步获取任务结果
sum_even.delay(100)
return HttpResponse("celery")