Django中celery的使用 非常簡單的用法

2022-07-08 01:42:10 字數 3170 閱讀 4400

這裡主要展示乙個最簡單的django中的celery任務,為了讓大家都可以用上celery。話不多說,首先給大家看一下我的目錄

這個專案安裝的環境:(感覺有幾個沒用到,反正先裝上) 

(1) python == 3.5.2    (2) django == 2.1.15      (3) celery == 3.1.26.post2    (4) django-celery == 3.2.2  (5) django-redis ==  4.10.0   (6) redis == 2.10.6

我這裡用到的中間人broker是redis,所以就安裝了redis相關的包。接下去就是操作步驟。

broker_url = '

redis:'#

任務容器位址,redis資料庫位址

celery_result_backend = '

redis:'#

任務結束的位址

step2:在testcelery下新建乙個celery.py

import

osfrom celery import

celery

from django.conf import

settings

#設定celery的環境變數和django-celery的工作目錄

os.environ.setdefault("

django_settings_module

", "

testcelery.settings")

#例項化celery應用,傳入伺服器名稱

testcelery")

#載入celery配置

django.conf:settings")

#step3:在testcelery下的__init__.py

from .celery import

__all__ = ['

']

step4:在celerytask下新建tasks.py

from

__future__

import

absolute_import, unicode_literals

import

time

from celery import

shared_task

@shared_task

defadds():

for i in range(0, 10):

print

(i) time.sleep(1)

return

'finish

'

step5:在testcelery下的views.py

"""進入這個url的時候就觸發非同步任務,並在session中記錄task_id

"""res =tasks.adds.delay()

request.session[

'task_id

'] =res.task_id

return jsonresponse()

defdasd(request):

"""進入url就會去獲取session中的task_id,並檢測任務. 若任務還在進行就顯示頁面還在載入,若進行完成就顯示hahaha

"""task_id = request.session.get('

task_id')

if task_id and asyncresult(task_id).state == '

pending

': #

載入時的狀態為pending

頁面正在載入...')

hahaha

')step6:在testcelery下的urls.py

from django.conf.urls import

urlfrom django.contrib import

admin

from testcelery import

views

urlpatterns =[

url(r

'^admin/

', admin.site.urls),

url(r

'^index/

', views.index),

url(r

'^dasd/

', views.dasd),

]

**部分結束

開啟程式部分:

step1:開啟本地的redis(這裡就不介紹如何安裝redis和開啟redis了)

step2:開啟django專案

step3:在terminal中輸入     celery worker -a testcelery -l info

終端裡顯示的介面如下:

有celery ready這樣的字出現,就表示celery已經開啟。

step4:在瀏覽器中輸入,檢視第乙個頁面,並觸發celery任務。

此時返回終端可以檢視celery的執行過程

上面這樣就是執行了adds的任務了

step5:在瀏覽器中輸入,檢視第二個頁面。若在第乙個任務沒有完成的情況下到第二個頁面可以看到乙個非同步的效果。

在任務沒完成的情況下顯示:

多次重新整理頁面,至任務完成後顯示:

這就是乙個簡單的django中運用celery的例子了!

Celery在Django中的使用

celery 是乙個強大的分布式任務佇列,它可以讓任務的執行完全脫離主程式,甚至可以被分配到其他主機上執行。我們通常使用它來實現非同步任務 async task 和定時任務 crontab 非同步任務 比如傳送郵件 手機驗證碼,或者檔案上傳,影象處理等等一些比較耗時的操作 定時任務 需要在特定時間執...

Django 中celery的簡單使用

celery的本質 通過提前建立的程序呼叫函式來實現非同步的任務。任務執行者 worker 提前建立的程序,呼叫對應的函式來實現非同步任務。任務發出者 傳送需要worker執行的任務函式的資訊。中間人 broker 任務佇列,儲存任務發出者發出的資訊。1 任務執行者 建立的程序 可以單獨在另一台電腦...

Celery在Django中的使用介紹

celery簡介 celery是乙個簡單 靈活且可靠的,處理大量訊息的分布式系統,並且提供維護這樣乙個系統的必須工具。它是乙個專注於實時處理的任務佇列,同時也支援任務排程。celery的三大組成部分 worker 任務執行單元 worker是celery提供的任務執行的單元,worker併發的執行在...