django中celery簡單使用的一種方法

2021-08-15 16:46:05 字數 1589 閱讀 9283

" "  官網英文版本

" "  官方中文版本

celery 介紹:

celery組成結構

任務佇列是一種跨執行緒、跨機器工作的一種機制

任務佇列中包含任務的工作單元。有專門的工作程序持續不斷的監視任務佇列,並從中獲得新的任務並處理

celery通過訊息進行通訊,通常使用乙個叫broker(中間人)來協client(任務的發出者)和worker(任務的處理者)

client發出訊息到佇列中,broker將佇列中的資訊派發給worker來處理

乙個celery系統可以包含很多的worker和broker,可增強橫向擴充套件性和高可用性能。

celery組成結構是生產者消費者模型的一種體現

pip install celery ==3.1.25   # 版本號可不加

pip install celery-with-redis ==3.0

pip install django-celery==3.1.17

==>django 安裝 djcelery

1.配置settings.py : 

...'djcelery',

}...

# 末尾初始化

import djcelery

djcelery.setup_loader()

broker_url = 'redis:'

celery_imports = ('應用名稱.task')

2. 在django根模組中新建乙個包或者在任何乙個模組中建立乙個py檔案定義耗時的任務(這裡以包為例)

import time

from celery import task

@task    # 裝飾器定義為非同步方法

def send_active_email(param_1,param_2,param_3):

print('hello ...')

time.sleep(2)

print('world ...')

2.5 在呼叫的時候

# 匯入非同步方法

from celery_tasks.tasks_liuqi import send_active_email

# 需要執行非同步方法的時候

send_active_email.delay(email, user_name, token)

3."重要" ==> python manage.py migrate  "遷移"

4. sudo redis-server /etc/redis/redis.conf ==> 啟動redis

5. 啟動worker ==> python manage.py celery worker --loglevel=info

6. 啟動django ==> python manager.py runserver

Django 中celery的簡單使用

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

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

這裡主要展示乙個最簡單的django中的celery任務,為了讓大家都可以用上celery。話不多說,首先給大家看一下我的目錄 這個專案安裝的環境 感覺有幾個沒用到,反正先裝上 1 python 3.5.2 2 django 2.1.15 3 celery 3.1.26.post2 4 django...

Celery在Django中的使用

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