celery是乙個簡單、靈活且可靠的,處理大量訊息的分布式系統,並且提供維護這樣乙個系統的必須工具。
它是乙個專注於實時處理的任務佇列,同時也支援任務排程。
任務執行單元-->worker是celery提供的任務執行的單元,worker併發的執行在分布式的系統節點中。
訊息中介軟體--> celery本身不提供訊息服務,但是可以方便的和第三方提供的訊息中介軟體整合。包括,rabbitmq, redis等等
ask result store用來儲存worker執行的任務的結果,celery支援以不同方式儲存任務的結果,包括amqp, redis等
定時任務:定時執行某件事情,比如每天資料統計
# 1. 啟動celery服務:
# 非windows:
# 指令:celery worker -a celery_task(celery專案檔案) -l info
# 指令: celery worker -a celery_task -l info -p eventlet
# 2. 新增任務:手動新增,需要自定義新增任務指令碼;自動新增任務,在celery.py中配置
# 3. 獲取結構:手動獲取,需要自定義任務指令碼
project
|---celery_task
|---celery.py # celery連線和相關配置,且名字必須是celery.py,如果要自動新增任務,那麼相 關配置也在celery.py裡配置;
|---tasks.py # 所有任務函式
|---add_task.py # 手動新增任務:立即任務,延時任務,定時任務;
|---get_result.py # 獲取結果
後面兩個檔案可以不用新增,看需求來。
celery.py
from celery import celery
# 匯入時間相關包,用法看下面
from datetime import timedelta
from celery.schedules import crontab
# 因為需要呼叫django專案中的models,所有需要新增django環境
import os,django
os.environ.setdefault('django_settings_module', 'bookapi.settings.dev')
django.setup()
# 新增任務的倉庫,這裡使用了redis
broker = "redis:"
# 接收處理結果的倉庫
backend = "redis:"
# 指定需要處理的任務
include = ['celery_task.tasks']
# 配置任務時區
# 配置定時任務
'recommend-task': ,
'monthly-task':
}
tasks.py
def recommend_num():
user_list = models.user.objects.all()
# print(user_list) ## , ]>
for user in user_list:
models.user.objects.filter(username=user.username).update(recommend_nums=3)
def monthly_num():
user_list = models.user.objects.all()
# print(user_list) ## , ]>
for user in user_list:
models.user.objects.filter(username=user.username).update(monthly_nums=2)
Celery在Django中的使用
celery 是乙個強大的分布式任務佇列,它可以讓任務的執行完全脫離主程式,甚至可以被分配到其他主機上執行。我們通常使用它來實現非同步任務 async task 和定時任務 crontab 非同步任務 比如傳送郵件 手機驗證碼,或者檔案上傳,影象處理等等一些比較耗時的操作 定時任務 需要在特定時間執...
Celery在Django中的使用介紹
celery簡介 celery是乙個簡單 靈活且可靠的,處理大量訊息的分布式系統,並且提供維護這樣乙個系統的必須工具。它是乙個專注於實時處理的任務佇列,同時也支援任務排程。celery的三大組成部分 worker 任務執行單元 worker是celery提供的任務執行的單元,worker併發的執行在...
非同步任務佇列Celery在Django中的使用
前段時間在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。在同事的指引下接觸了celery這個非同步任務佇列框架,鑑於網上關於celery和django結合的文件較少,大部分也只是粗粗介紹了大概的流程,...