celery中文譯為芹菜,是乙個分布式任務佇列. 是非同步的,所以能處理大量訊息
最新的celery不支援windows下使用了,所以在使用pycharm安裝celery模組之後,需要再安裝eventlet模組才能測試執行.
啟動客戶端:
s1,s2要在專案目錄下,如果在資料夾中執行,terminal輸入命令的時候要-a 專案資料夾的名字
c=celery("task
",broker="
redis:
",backend="
redis:
", include="專案名.資料夾")
terminal中輸入
celery worker -a s1 -l info -p eventlet
給定兩個檔案
s1.py
from celery importcelery
import
time
c=celery("
task
",broker="
redis:
",backend="
redis:")
@c.task
defmyfun1(a,b):
return f"
myfun1
"@c.task
defmyfun2():
return
"myfun2
"@c.task
defmyfun3():
return
"myfun3
"celery worker -a s1 -l info -p eventlet
s2.py
from s1 importmyfun1,myfun2,myfun3,c
from celery.result import
asyncresult
#多個生產者
#for i in range(10):
#s=myfun1.delay()
#print(s)
s=myfun1.delay(10,20)
(s.id)
#獲取狀態
#print(r.status)
#print(r.successful())
#獲取值
#print(r.get())
#只獲取報錯資訊
print(r.get(propagate=false))
#獲取具體出錯的位置
#print(r.traceback)
表示延遲5秒鐘執行任務
(t)print(t.get())
支援的引數
countdown : 等待一段時間再執行.max_retries : 最大重試次數, 預設為 3次.
interval_start : 重試等待的時間間隔秒數, 預設為 0 , 表示直接重試不等待.
interval_step : 每次重試讓重試間隔增加的秒數, 可以是數字或浮點數, 預設為 0.2interval_max : 重試間隔最大的秒數, 即 通過 interval_step 增大到多少秒之後, 就不在增加了, 可以是數字或者浮點數, 預設為 0.2 .
s1.py
from celery importcelery
import
time
c=celery("
task
",broker="
redis:
",backend="
redis:")
@c.task
defmyfun1(a,b):
return f"
myfun1
"@c.task
defmyfun2():
return
"myfun2
"@c.task
defmyfun3():
return
"myfun3
"
s2.py
from s1 importmyfun1,myfun2,myfun3,c
from celery.result import
asyncresult
from datetime import
timedelta
#指定多長時間以後執行##
第二種方式,使用utc時間
utc時間")
(s.id)#延時
#重試
啟動: 在terminal中
celery beat -a s2 -l info
s1.py
from celery importcelery
import
time
c=celery("
task
",broker="
redis:
",backend="
redis:")
@c.task
defmyfun1(a,b):
return f"
myfun1
"@c.task
defmyfun2():
return
"myfun2
"@c.task
defmyfun3():
return
"myfun3
"
s2.py
from s1 importcfrom celery.beat import
crontab
c.conf.beat_schedule =,
"crontab":
}
配置詳解:
from celery.schedules importcrontab
celerybeat_schedule =,
}
Django 非同步任務 定時任務Celery
將任務分配給其他的程序去執行,django的主程序只負責發起任務,而執行任務的不在使用 django 的主程序。python 有乙個很棒的非同步任務框架,叫做 celery django為了讓開發者開發更加方便,整合了 celery,形成了django celery 外掛程式1.安裝django c...
celery的非同步任務與定時任務
在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。與此同時,celery除了非同步任務,還可以開啟定時任務,方便排程。2 安裝需要的軟體包 按照順序安裝 pip install celery pip i...
使用celery執行非同步定時任務
建立乙個名叫tasks.py的檔案,裡邊單獨存放定時任務函式 from datetime import timedelta from django.utils import timezone from polls.models import user defcheck inactive user 檢...