Django Celery使用及介紹

2021-10-11 02:04:26 字數 3669 閱讀 7966

1.1 celery應⽤舉例

1.2 celery有以下優點

1.3 celery 特性

2.1 celery 扮演⽣產者和消費者的角色

2.2 產生任務的方式

2.3 celery 依賴三個庫: 這三個庫, 都由 celery 的開發者開發和維護.

推薦版本

django == 2.2.6

django-celery == 3.3.1

django-redis == 4.11.0

redis == 2.10.6

celery == 3.1.26.post2

#settings.py

import djcelery

djcelery.setup_loader(

)broker_url =

'redis:'[.

.."djcelery",.

..]

python manage.py migrate

#如若不成功可以嘗試⼀下命令語句

# request.add_query_param('signname', "天天**")

# request.add_query_param('templatecode', "sms_185212884")

# request.add_query_param('templateparam', data)

# response1 = client.do_action(request)

# # python2: print(response)

# res = json.loads(str(response1, encoding='utf-8'))

time.sleep(5)

return5+

10

c、⼀次需要注意 在impprt task時, 需要保持⼀致

)#先獲取redis ⾥的圖⽚驗證碼來⽐對

redis_cli = get_redis_connection(

"img_code"

) redis_img_code = redis_cli.get(image_code_uuid)

.decode(

)print

(redis_img_code)

print

(image_code)

if image_code.lower(

)!= redis_img_code.lower():

return response(

)# 傳送簡訊

num = random.randint(

100000

,999999

)print

(num)

send_data =

send_sms.delay(phone,send_data)

# pipeline管道:作⽤就是把多個命令放在⼀起來執⾏

pl = redis_cli.pipeline(

) pl.setex(phone,60*

5,num)

pl.delete(image_code_uuid)

pl.execute(

)return response(

)

python manage.py celery worker -

-loglevel=info

如果報錯不讓超級管理員來啟動,在settings.py加⼊以下配置

from celery import celery, platforms

platforms.c_force_root =

true

django celery 任務訊息佇列

描述 為提高 效能,很多耗時,但不影響頁面正常的操作,可丟給訊息佇列非同步執行 比如sns 的 新鮮事兒 系統,我發帖之後,會給所有關注我的人推送一條通知。乍一看沒什麼難的,發帖之後找出關注我的人,然後生成相應的訊息記錄就行了。但問題是,100個人關注我,就要執行100條insert查詢,更要命的是...

Django Celery定時任務

celery是由python開發的乙個簡單 靈活 可靠的處理大量任務的分發系統,它不僅支援實時處理也支援任務排程。pip3 install django celery beat pip3 install redis 寫入配置 celery broker url redis 密碼 127.0.0.1 ...

Django celery非同步傳送郵件

使用基於django搭建的後端框架,並使用celery進行非同步傳送郵件。1.setting.py檔案中配置 配置郵件伺服器 指定郵件後端 email backend django.core.mail.backends.smtp.emailbackend 發郵件主機 email host smtp....