Celery在Django中的使用介紹

2021-09-29 08:51:58 字數 1045 閱讀 2763

celery簡介

celery是乙個簡單、靈活且可靠的,處理大量訊息的分布式系統,並且提供維護這樣乙個系統的必須工具。

它是乙個專注於實時處理的任務佇列,同時也支援任務排程。

celery的三大組成部分

worker

任務執行單元–>worker是celery提供的任務執行的單元,worker併發的執行在分布式的系統節點中。

broker(存tasks的倉庫)

訊息中介軟體–> celery本身不提供訊息服務,但是可以方便的和第三方提供的訊息中介軟體整合。包括,rabbitmq, redis等等

backend (存results的倉庫)

ask result store用來儲存worker執行的任務的結果,celery支援以不同方式儲存任務的結果,包括amqp, redis等

新增任務:手動新增,需要自定義新增任務指令碼;自動新增任務,在celery.py中配置

#3. 獲取結構:手動獲取,需要自定義任務指令碼

celery在django專案中的使用

celery目錄結構

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

import os,django

os.environ.setdefault(『django_settings_module』, 『bookapi.settings.dev』)

django.setup()

Celery在Django中的使用

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

Celery在Django中的使用介紹

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

非同步任務佇列Celery在Django中的使用

前段時間在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。在同事的指引下接觸了celery這個非同步任務佇列框架,鑑於網上關於celery和django結合的文件較少,大部分也只是粗粗介紹了大概的流程,...