celery英文官方網(wǎng)站:www.celeryproject.org
中文網(wǎng)站:http://docs.jinkan.org/docs/celery/
celery
Celery 是一個(gè)簡(jiǎn)單、靈活且可靠的,處理大量消息的
分布式系統(tǒng)
,并且提供維護(hù)這樣一個(gè)系統(tǒng)的必需工具。
專(zhuān)注于實(shí)時(shí)處理的任務(wù)隊(duì)列,同時(shí)也支持任務(wù)調(diào)度。
作用:
- 解決耗時(shí)操作:開(kāi)一個(gè)新的進(jìn)程,去操作耗時(shí)操作,不影響原有進(jìn)程 定時(shí)操作,使
- List item
用celery定時(shí)執(zhí)行
操作:
- 定義一個(gè)任務(wù)task,也就是一個(gè)python函數(shù)
- 將耗時(shí)任務(wù)存儲(chǔ)到隊(duì)列queue中
- 在一個(gè)新的進(jìn)程中,負(fù)責(zé)執(zhí)行隊(duì)列中的任務(wù),worker
- broker:負(fù)責(zé)調(diào)度,將任務(wù)加到隊(duì)列中,在布置環(huán)境中使用redis
安裝包
pip install celery
pip install celery
-
with
-
redis
pip install django
-
celery
配置settings
將djcelery包加入到INSTALLED_APPS中
并添加以下代碼:
import
djcelery
djcelery
.
setup_loader
(
)
# 初始化所有的task
BROKER_URL
=
'redis://127.0.0.1:6379/0'
# 把所有的任務(wù)放在queue中,默認(rèn)用0這個(gè)數(shù)據(jù)庫(kù)
CELERY_IMPORTS
=
(
'test1.task'
)
# 在test1這個(gè)應(yīng)用下使用任務(wù)
在test1應(yīng)用目錄下創(chuàng)建task.pty文件
import
time
from
celery
import
task
@task
def
show
(
)
:
print
(
'hello...'
)
time
.
sleep
(
5
)
print
(
'world...'
)
遷移,生成celery需要的數(shù)據(jù)表
此時(shí)不需要生成遷移,直接進(jìn)行遷移
python manage
.
py migrate
啟動(dòng)redis
sudo redis
-
server
/
etc
/
redis
/
redis
.
conf
啟動(dòng)worker
python manage
.
py celery worker
-
-
loglevel
=
info
定義視圖,調(diào)用task
函數(shù)名.delay([參數(shù)])
from
task
import
*
def
celeryTest
(
request
)
:
show
.
delay
(
)
return
HttpResponse
(
'ok'
)
配置url
url
(
r
'^celerytest/$'
,
views
.
celeryTest
)
,
總結(jié):
- 簡(jiǎn)單:易使用和維護(hù),不需要配置文件
- 高可用性:如果鏈接丟失或者失敗,客戶(hù)端會(huì)自動(dòng)重試,并broker通過(guò)主/主或者主/從方式復(fù)制來(lái)提高可用性。
- 快速:?jiǎn)蝹€(gè)celery進(jìn)程每分鐘可處理數(shù)以百萬(wàn)計(jì)的任務(wù)
- 靈活:celery幾乎所有的部分都可以擴(kuò)展或者單獨(dú)使用。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
