Django-Celery异步发送激活邮件,以及注意点
生活随笔
收集整理的這篇文章主要介紹了
Django-Celery异步发送激活邮件,以及注意点
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- 1.Celery介紹
- 點(diǎn)擊查看Celery參考文檔
- Celery是一個(gè)功能完備即插即用的任務(wù)隊(duì)列
- Celery適用異步處理問題,比如發(fā)送郵件、文件上傳,圖像處理等等比較耗時(shí)的操作,我們可將其異步執(zhí)行,這樣用戶不需要等待很久,提高用戶體驗(yàn)
- 2.Celery特點(diǎn):
- 簡單,易于使用和維護(hù),有豐富的文檔
- 高效,單個(gè)Celery進(jìn)程每分鐘可以處理數(shù)百萬個(gè)任務(wù)
- 靈活,Celery中幾乎每個(gè)部分都可以自定義擴(kuò)展
- Celery非常易于集成到一些web開發(fā)框架中
-
3.安裝Celery
# 進(jìn)入虛擬環(huán)境 pip install celery -
4.Celery組成結(jié)構(gòu)
- 任務(wù)隊(duì)列是一種跨線程、跨機(jī)器工作的一種機(jī)制
- 任務(wù)隊(duì)列中包含任務(wù)的工作單元。有專門的工作進(jìn)程持續(xù)不斷的監(jiān)視任務(wù)隊(duì)列,并從中獲得新的任務(wù)并處理
- Celery通過消息進(jìn)行通信,通常使用一個(gè)叫broker(中間人)來協(xié)client(任務(wù)的發(fā)出者)和worker(任務(wù)的處理者)
- client發(fā)出消息到隊(duì)列中,broker將隊(duì)列中的信息派發(fā)給worker來處理
- 一個(gè)Celery系統(tǒng)可以包含很多的worker和broker,可增強(qiáng)橫向擴(kuò)展性和高可用性能。
-
Celery組成結(jié)構(gòu)是生產(chǎn)者消費(fèi)者模型的一種體現(xiàn)
-
Celery使用
1.創(chuàng)建Celery異步任務(wù)文件
-
2.創(chuàng)建應(yīng)用對象/客戶端/client
- 應(yīng)用對象內(nèi)部封裝要異步執(zhí)行的任務(wù)
- Celery():
- 參數(shù)1是異步任務(wù)路徑
- 參數(shù)2是指定的broker
- redis://密碼@redis的ip:端口/數(shù)據(jù)庫
- redis://192.168.243.191:6379/4
- 返回客戶端應(yīng)用對象app
- send_active_email():內(nèi)部封裝激活郵件內(nèi)容,并用裝飾器@app.task注冊
-
調(diào)用python的send_mail()將激活郵件發(fā)送出去
from celery import Celeryfrom django.core.mail import send_mailfrom django.conf import settings # 創(chuàng)建celery應(yīng)用對象 app = Celery('celery_tasks.tasks', broker='redis://192.168.243.191:6379/4') - # 中間人用redis,很多支持中間人broker的
- @app.task def send_active_email(to_email, user_name, token): #在視圖view中調(diào)用tasks的send_active_email.delay()方法時(shí),傳的參數(shù)不能時(shí)obj """發(fā)送激活郵件"""
- .......
-
4.創(chuàng)建worker
- 示例:此處演示把worker創(chuàng)建到ubuntu虛擬機(jī)中,ubuntu作為Celery服務(wù)器
-
Celery服務(wù)器創(chuàng)建worker步驟
-
1.把項(xiàng)目代碼拷貝一份到ubuntu虛擬機(jī)中
- 并在celery_tasks/tasks.py文件頂部添加以下代碼
-
作用:讓Celery的worker能夠加載Django配置環(huán)境
import os?
os.environ["DJANGO_SETTINGS_MODULE"] = "dailyfresh.settings"
# 放到Celery服務(wù)器上時(shí)添加的代碼 import django django.setup()2.終端創(chuàng)建worker, 需要在虛擬環(huán)境下運(yùn)行
celery -A celery_tasks.tasks worker -l info ?轉(zhuǎn)載于:https://www.cnblogs.com/yuanzhengchi/p/8685761.html
總結(jié)
以上是生活随笔為你收集整理的Django-Celery异步发送激活邮件,以及注意点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目部署
- 下一篇: idea创建maven web项目需要注