Django Docker 使用Celery執(zhí)行異步任務

Django處理一些比較耗時的任務(比如發(fā)送郵件)時监婶,使用異步執(zhí)行的方式能使頁面及時跳轉(zhuǎn)旅赢,提升用戶體驗。

一惑惶、安裝celery煮盼、redis和django-celery

requirement.txt

Django==1.11
mysqlclient
Markdown
Pygments
celery
redis
django-celery

Dockerfile

FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

docker-compose.yml

version: '2'
services:
  web:
    build: .
    command: python ./Blog/manage.py runserver 0.0.0.0:80
    volumes:
      - .:/code
    ports:
      - "80:80"

  redis:
    image: redis
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - 6379:6379



執(zhí)行以下命令
$ docker-compose up --build

二、在YourProjectName中創(chuàng)建celery.py文件(與setting.py同級)輸入以下內(nèi)容:

from celery import Celery
from django.conf import settings
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'YourProjectName.settings')
app = Celery('Blog')
app.conf.update( BROKER_URL='redis://YourIP:6379/2 ',)
app.autodiscover_tasks(settings.INSTALLED_APPS)


三带污、在Blog應用中新建tasks.py文件僵控,并寫入要進行處理的任務

比如郵件發(fā)送任務

from GlobalConfig.celery import app
from django.core.mail import send_mail

@app.task
def celery_email(title, content, email_to):
    email_title = title
    email_body = content
    send_mail(email_title, email_body, '951268027@qq.com',
              [email_to], fail_silently=False)


四、編寫view視圖鱼冀,并寫入調(diào)用tasks.py的方法

def contact(request):
    if request.method == 'POST':
        try:
            email_title = '博客用戶:' + email + '  主題:' + title
            email_body = content
            email_to = '951268027@qq.com'
            celery_email.delay(email_title, email_body, email_to)
            messages.add_message(request, messages.SUCCESS, "發(fā)送成功报破!")
            return render(request, 'Home/contact.html')
        except:
            messages.add_message(request, messages.ERROR, "您的網(wǎng)絡似乎開小差了...")
            return render(request, 'Home/contact.html')
    else:
        return render(request, 'Home/contact.html')


五、啟用worker

$ docker exec -it your_container_name /bin/bash
進入到項目下
啟用worker并讓其在后臺執(zhí)行
$ nohup celery -A YourProjectNmae worker --loglevel=DEBUG &

至此千绪,大功告成充易!

本博客參考了AustinKuture Django中使用celery完成異步任務

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荸型,隨后出現(xiàn)的幾起案子盹靴,更是在濱河造成了極大的恐慌,老刑警劉巖帆疟,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹉究,死亡現(xiàn)場離奇詭異,居然都是意外死亡踪宠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門妈嘹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柳琢,“玉大人,你說我怎么就攤上這事润脸〖砹常” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵毙驯,是天一觀的道長倒堕。 經(jīng)常有香客問我,道長爆价,這世上最難降的妖魔是什么垦巴? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任媳搪,我火速辦了婚禮,結(jié)果婚禮上骤宣,老公的妹妹穿的比我還像新娘秦爆。我一直安慰自己,他們只是感情好憔披,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布等限。 她就那樣靜靜地躺著,像睡著了一般芬膝。 火紅的嫁衣襯著肌膚如雪望门。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天锰霜,我揣著相機與錄音筹误,去河邊找鬼。 笑死锈遥,一個胖子當著我的面吹牛纫事,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播所灸,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼丽惶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了爬立?” 一聲冷哼從身側(cè)響起钾唬,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侠驯,沒想到半個月后抡秆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡吟策,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年儒士,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檩坚。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡着撩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匾委,到底是詐尸還是另有隱情拖叙,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布赂乐,位于F島的核電站薯鳍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挨措。R本人自食惡果不足惜挖滤,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一崩溪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壶辜,春花似錦悯舟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岭参,卻和暖如春反惕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背演侯。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工姿染, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秒际。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓悬赏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娄徊。 傳聞我的和親對象是個殘疾皇子闽颇,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容