在django專案中使用celery非同步傳送郵件

2021-10-02 02:31:31 字數 1810 閱讀 4515

一、在專案虛擬環境中安裝celery和redis

在tasks.py中新增如下**:

from celery import celery

from django.conf import settings

from django.core.mail import send_mail

# django環境初始化

import os

import django

os.environ.setdefault(

'django_settings_module'

,'dailyfresh.settings'

)django.setup(

)# 建立乙個celery類的例項物件

'celery_tasks.tasks'

, broker=

'redis:'

)def

send_email_task

(username, email, token)

: subject =

'天天生鮮歡迎資訊'

message =

'' sender = settings.email_from

receiver =

[email]

html_message =

.format

( username, token, token)

send_mail(subject, message, sender, receiver, html_message=html_message)

三、在檢視函式中新增celery任務
from django.shortcuts import render

from celery_tasks.tasks import send_email_task

defregister

(request)

:# 部分**省略

send_email_task.delay(username, email, token)

return render(request,

'index.html'

)

四、啟動celery

1、進入專案虛擬環境中,拷貝乙份專案**到ubuntu桌面,進入專案目錄下,輸入命令:

從上圖中可以看到celery任務已經開啟了!

接下來去執行一遍檢視函式,效果如下圖所示,顯示已接受到任務,並執行成功:

Django專案中使用Redis

django redis redis 是乙個 key value 儲存系統,常用於快取的儲存。django redis 基於 bsd 許可,是乙個使 django 支援 redis cache session 後端的全功能元件.安裝 django redis 最簡單的方法就是用 pip pip in...

Django專案中使用Redis

django redis redis 是乙個 key value 儲存系統,常用於快取的儲存。django redis 基於 bsd 許可,是乙個使 django 支援 redis cache session 後端的全功能元件.安裝 django redis 最簡單的方法就是用 pip pip in...

在專案中使用ExtJS

今天extjs官網發布了extjs最新正式版4.2.1。extjs為開發者在開發富客戶的b s應用中提供豐富的ui元件,具有統一的主題,便於快速開發,提高效率。但顯然它並不適合互聯 的開發。builds 壓縮後的extjs 體積更小,更快 docs 開發文件 examples 官方演示示例 loca...